Sha256: c5968f26e6cc4c210a02acfa72c2b8f39aab6ec5b0ed829e154a463e2856e6bc

Contents?: true

Size: 1.44 KB

Versions: 12

Compression:

Stored size: 1.44 KB

Contents

module LicenseFinder
  class DecisionApplier
    def initialize(options)
      @decisions = options.fetch(:decisions)
      @acknowledged = apply_decisions(options.fetch(:packages))
    end

    attr_reader :acknowledged

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

    def blacklisted
      acknowledged.select(&:blacklisted?)
    end

    private

    attr_reader :decisions

    def apply_decisions(system_packages)
      all_packages = decisions.packages + system_packages
      all_packages
        .map { |package| with_decided_licenses(package) }
        .map { |package| with_approval(package) }
        .reject { |package| ignored?(package) }
    end

    def ignored?(package)
      decisions.ignored?(package.name) ||
        (package.groups.any? && package.groups.all? { |group| decisions.ignored_group?(group) })
    end

    def with_decided_licenses(package)
      decisions.licenses_of(package.name).each do |license|
        package.decide_on_license license
      end
      package
    end

    def with_approval(package)
      if package.licenses.all? { |license| decisions.blacklisted?(license) }
        package.blacklisted!
      elsif decisions.approved?(package.name, package.version)
        package.approved_manually!(decisions.approval_of(package.name, package.version))
      elsif package.licenses.any? { |license| decisions.whitelisted?(license) }
        package.whitelisted!
      end
      package
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
license_finder-3.0.0 lib/license_finder/decision_applier.rb
license_finder-2.1.2 lib/license_finder/decision_applier.rb
license_finder-2.1.1 lib/license_finder/decision_applier.rb
license_finder-2.1.0 lib/license_finder/decision_applier.rb
license_finder-2.1.0.rc9 lib/license_finder/decision_applier.rb
license_finder-2.1.0.rc8 lib/license_finder/decision_applier.rb
license_finder-2.1.0.rc7 lib/license_finder/decision_applier.rb
license_finder-2.1.0.rc6 lib/license_finder/decision_applier.rb
license_finder-2.1.0.rc5 lib/license_finder/decision_applier.rb
license_finder-2.1.0.rc4 lib/license_finder/decision_applier.rb
license_finder-2.1.0.rc3 lib/license_finder/decision_applier.rb
license_finder-2.1.0.rc2 lib/license_finder/decision_applier.rb