class LicenseFinder::DecisionApplier

def acknowledged

def acknowledged
  packages.reject { |package| ignored?(package) }
end

def ignored?(package)

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

def initialize(options)

def initialize(options)
  @decisions = options.fetch(:decisions)
  @system_packages = options.fetch(:packages)
end

def packages

def packages
  result = decisions.packages + system_packages
  result
    .map { |package| with_decided_licenses(package) }
    .map { |package| with_approval(package) }
end

def unapproved

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

def with_approval(package)

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

def with_decided_licenses(package)

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