Sha256: 7bf4254ceb3156cbf5ce0832182052ac9cb60503c1d663d4d481899bf352b130

Contents?: true

Size: 1.28 KB

Versions: 21

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

require 'csv'
require 'license_finder/package_utils/sbt_dependency_finder'

module LicenseFinder
  class Sbt < PackageManager
    def initialize(options = {})
      super
      @include_groups = options[:sbt_include_groups]
    end

    def current_packages
      command = "#{package_management_command} dumpLicenseReport"
      _stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(command) }
      raise "Command '#{command}' failed to execute: #{stderr}" unless status.success?

      dependencies = SbtDependencyFinder.new(project_path).dependencies
      packages = dependencies.flat_map do |text|
        options = {
          headers: true
        }

        contents = CSV.parse(text, options)
        contents.map do |row|
          group_id, name, version = row['Dependency'].split('#').map(&:strip)
          spec = {
            'artifactId' => name,
            'groupId' => group_id,
            'version' => version,
            'licenses' => [{ 'name' => row['License'] }]
          }
          SbtPackage.new(spec, logger: logger, include_groups: @include_groups)
        end
      end

      packages.uniq
    end

    def package_management_command
      'sbt'
    end

    def possible_package_paths
      [project_path.join('build.sbt')]
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
license_finder-5.5.0 lib/license_finder/package_managers/sbt.rb