Sha256: f7025c75a2b7f41931d75a4014e236e35ee49c9eae33c89d40bc24a0e8bc7abf

Contents?: true

Size: 1.74 KB

Versions: 29

Compression:

Stored size: 1.74 KB

Contents

# frozen_string_literal: true

module LicenseFinder
  class LicenseAggregator
    def initialize(config, aggregate_paths)
      @config = config
      @aggregate_paths = aggregate_paths
    end

    def dependencies
      aggregate_packages
    end

    def any_packages?
      finders.map do |finder|
        finder.prepare_projects if @config.prepare
        finder.any_packages?
      end.reduce(:|)
    end

    def unapproved
      aggregate_packages.reject(&:approved?)
    end

    def restricted
      aggregate_packages.select(&:restricted?)
    end

    private

    def finders
      return @finders unless @finders.nil?

      @finders = if @aggregate_paths.nil?
                   [LicenseFinder::Core.new(@config)]
                 else
                   @aggregate_paths.map do |path|
                     # Passing file paths as values instead of allowing them to evaluate in config
                     LicenseFinder::Core.new(@config.merge(project_path: path,
                                                           log_directory: @config.log_directory || @config.project_path,
                                                           decisions_file: @config.decisions_file_path))
                   end
                 end
    end

    def aggregate_packages
      return @packages unless @packages.nil?

      all_packages = finders.flat_map do |finder|
        finder.prepare_projects if @config.prepare
        finder.acknowledged.map { |dep| MergedPackage.new(dep, [finder.project_path]) }
      end
      @packages = all_packages.group_by { |package| [package.name, package.version] }
                              .map do |_, packages|
        MergedPackage.new(packages[0].dependency, packages.flat_map(&:aggregate_paths))
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 2 rubygems

Version Path
license_finder-7.1.0 lib/license_finder/license_aggregator.rb
license_finder-7.0.1 lib/license_finder/license_aggregator.rb
license_finder-7.0.0 lib/license_finder/license_aggregator.rb
license_finder-6.15.0 lib/license_finder/license_aggregator.rb
gitlab-license_finder-6.14.2.1 lib/license_finder/license_aggregator.rb
license_finder-6.14.2 lib/license_finder/license_aggregator.rb
license_finder-6.14.1 lib/license_finder/license_aggregator.rb
license_finder-6.13.0 lib/license_finder/license_aggregator.rb
license_finder-6.12.2 lib/license_finder/license_aggregator.rb
license_finder-6.12.1 lib/license_finder/license_aggregator.rb
license_finder-6.12.0 lib/license_finder/license_aggregator.rb
license_finder-6.11.0 lib/license_finder/license_aggregator.rb
license_finder-6.10.1 lib/license_finder/license_aggregator.rb
license_finder-6.10.0 lib/license_finder/license_aggregator.rb
license_finder-6.9.0 lib/license_finder/license_aggregator.rb
license_finder-6.8.2 lib/license_finder/license_aggregator.rb
license_finder-6.8.1 lib/license_finder/license_aggregator.rb
license_finder-6.8.0 lib/license_finder/license_aggregator.rb
license_finder-6.7.0 lib/license_finder/license_aggregator.rb
license_finder-6.6.2 lib/license_finder/license_aggregator.rb