diff options
| author | mo khan <mo.khan@gmail.com> | 2020-06-03 23:10:28 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-06-03 23:10:28 -0600 |
| commit | b2f50360e39c73f7de31f4d83cac624fe0171c12 (patch) | |
| tree | 86d3a9b3a81984469b1e56b54839071de14f6f3e /lib | |
| parent | d87fe100bc10acc385c82aa21d151b4ac516cbe4 (diff) | |
Use a threadpool to process each dependency
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/spandx.rb | 3 | ||||
| -rw-r--r-- | lib/spandx/cli.rb | 1 | ||||
| -rw-r--r-- | lib/spandx/cli/commands/scan.rb | 9 |
3 files changed, 10 insertions, 3 deletions
diff --git a/lib/spandx.rb b/lib/spandx.rb index d43ba77..b241864 100644 --- a/lib/spandx.rb +++ b/lib/spandx.rb @@ -2,7 +2,9 @@ require 'addressable/uri' require 'bundler' +require 'concurrent' require 'csv' +require 'etc' require 'forwardable' require 'json' require 'logger' @@ -13,7 +15,6 @@ require 'parslet' require 'pathname' require 'yaml' require 'zeitwerk' -require 'terminal-table' require 'spandx/spandx' loader = Zeitwerk::Loader.for_gem diff --git a/lib/spandx/cli.rb b/lib/spandx/cli.rb index 817ff89..eaab0d6 100644 --- a/lib/spandx/cli.rb +++ b/lib/spandx/cli.rb @@ -3,6 +3,7 @@ require 'nanospinner' require 'thor' require 'tty-screen' +require 'terminal-table' module Spandx module Cli diff --git a/lib/spandx/cli/commands/scan.rb b/lib/spandx/cli/commands/scan.rb index b54e73b..d55d2ce 100644 --- a/lib/spandx/cli/commands/scan.rb +++ b/lib/spandx/cli/commands/scan.rb @@ -16,14 +16,19 @@ module Spandx def execute(output: $stdout) printer = ::Spandx::Core::Printer.for(@options[:format]) printer.print_header(output) + pool = Concurrent::FixedThreadPool.new(Etc.nprocessors) each_file do |file| spinner.spin(file) ::Spandx::Core::Parser.parse(file).each do |dependency| - printer.print_line(enhance(dependency), output) + pool.post do + printer.print_line(enhance(dependency), output) + end end end - printer.print_footer(output) + pool.shutdown + pool.wait_for_termination spinner.stop + printer.print_footer(output) end private |
