Sha256: 348c4b6bf88b8b54354b8a30b97cf4e0006455d230353c124df8c43d5e30dffd

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

require 'forwardable'

module LicenseFinder
  class PackageSaver
    extend Forwardable
    def_delegators :package, :license, :children, :groups, :summary, :description, :version, :homepage

    attr_reader :dependency, :package

    def self.save_all(packages)
      packages.map do |package|
        find_or_create_by_name(package).save
      end
    end

    def initialize(dependency, package)
      @dependency = dependency
      @package = package
    end

    def save
      dependency.version = version.to_s
      dependency.summary = summary
      dependency.description = description
      dependency.homepage = homepage
      dependency.bundler_group_names = groups.map(&:to_s)
      dependency.children_names = children
      dependency.apply_better_license license

      # Only save *changed* dependencies. This ensures re-running
      # `license_finder` won't always update the DB, and therefore won't always
      # update the HTML/markdown reports with a new timestamp.
      dependency.save_changes
      dependency
    end

    private

    def self.find_or_create_by_name(package)
      dependency = Dependency.named(package.name)
      new(dependency, package)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
license_finder-1.1.1-java lib/license_finder/package_saver.rb
license_finder-1.1.1 lib/license_finder/package_saver.rb
license_finder-1.1.0 lib/license_finder/package_saver.rb
license_finder-1.0.1 lib/license_finder/package_saver.rb
license_finder-1.0.0.1 lib/license_finder/package_saver.rb