Sha256: 407a784ccf685455d1af6ab6a4ffcf01b6d388ca4bf06a5d55162ceab04b1a1e

Contents?: true

Size: 1.28 KB

Versions: 6

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

module Spandx
  module Cli
    module Commands
      class Build
        INDEXES = {
          dotnet: Spandx::Dotnet::Index,
          maven: Spandx::Java::Index,
          nuget: Spandx::Dotnet::Index,
          pypi: Spandx::Python::Index,
          rubygems: Spandx::Ruby::Index,
        }.freeze

        def initialize(options)
          @options = options
        end

        def execute(output: $stdout)
          catalogue = Spandx::Spdx::Catalogue.from_git
          build_buckets
          indexes.each do |index|
            output.puts index.name
            index.update!(catalogue: catalogue, output: output)
          end
          output.puts 'OK'
        end

        private

        def indexes
          index = INDEXES[@options[:index]&.to_sym]

          if index.nil?
            INDEXES.values.uniq.map { |x| x.new(directory: directory) }
          else
            [index.new(directory: directory)]
          end
        end

        def directory
          @options.fetch(:directory, File.join(Dir.pwd, '.index'))
        end

        def build_buckets
          (0x00..0xFF).map { |x| x.to_s(16).rjust(2, '0').downcase }.each do |hex|
            FileUtils.mkdir_p(File.join(directory, hex))
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
spandx-0.19.0 lib/spandx/cli/commands/build.rb
spandx-0.18.3 lib/spandx/cli/commands/build.rb
spandx-0.18.2 lib/spandx/cli/commands/build.rb
spandx-0.18.1 lib/spandx/cli/commands/build.rb
spandx-0.18.0 lib/spandx/cli/commands/build.rb
spandx-0.17.0 lib/spandx/cli/commands/build.rb