Sha256: 8fb8936c7f64e738d323fe81d9f93548b0c5d5f7ab702722851c8bb5cfc0f7fb

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

module LicenseFinder
  module DependencyManager
    def self.sync_with_bundler
      modifying {
        current_dependencies = LicenseFinder.current_gems.map(&:save_as_dependency)
        Dependency.bundler.obsolete(current_dependencies).each(&:destroy)
      }
    end

    def self.create_non_bundler(license, name, version)
      raise Error.new("#{name} dependency already exists") unless Dependency.where(name: name).empty?

      modifying {
        dependency = Dependency.new(manual: true, name: name, version: version)
        dependency.license = LicenseAlias.create(name: license)
        dependency.approval = Approval.create
        dependency.save
      }
    end

    def self.destroy_non_bundler(name)
      modifying { find_by_name(name, Dependency.non_bundler).destroy }
    end

    def self.license!(name, license)
      modifying { find_by_name(name).license.set_manually(license) }
    end

    def self.approve!(name)
      modifying { find_by_name(name).approve!  }
    end

    private # not really private, but it looks like it is!

    def self.find_by_name(name, scope = Dependency)
      dep = scope.first(name: name)
      raise Error.new("could not find dependency named #{name}") unless dep
      dep
    end

    def self.modifying
      result = yield
      Reporter.write_reports
      result
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
license_finder-0.9.0-java lib/license_finder/dependency_manager.rb
license_finder-0.9.0 lib/license_finder/dependency_manager.rb