Sha256: 4eb8a2f4c2bcf98daa4ec9258547c65a5e179c4105a0e6730aeec453084670ec

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

module Spandx
  module Cli
    module Commands
      class Scan
        include Spandx::Core
        attr_reader :scan_path

        def initialize(scan_path, options)
          @scan_path = ::Pathname.new(scan_path)
          @options = options
          require(options[:require]) if options[:require]
        end

        def execute(output: $stdout)
          with_printer(output) do |printer|
            each_dependency do |dependency|
              printer.print_line(Plugin.enhance(dependency), output)
            end
          end
        end

        private

        def each_file
          PathTraversal
            .new(scan_path, recursive: @options[:recursive])
            .each { |file| yield file }
        end

        def each_dependency
          each_file do |file|
            Parser.parse(file).each do |dependency|
              yield dependency
            end
          end
        end

        def with_printer(output)
          printer = ::Spandx::Cli::Printer.for(@options[:format])
          printer.print_header(output)
          yield printer
        ensure
          printer.print_footer(output)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
spandx-0.18.3 lib/spandx/cli/commands/scan.rb
spandx-0.18.2 lib/spandx/cli/commands/scan.rb