Sha256: a62a74aa7bf6ee08c71e777f3fd88582bc612f26315f71276b0148fdcaae3453

Contents?: true

Size: 1.84 KB

Versions: 2

Compression:

Stored size: 1.84 KB

Contents

require 'digest'

module LicenseFinder
  module DependencyManager
    def self.sync_with_bundler
      modifying {
        current_dependencies = BundledGemSaver.save_gems(Bundle.current_gems(LicenseFinder.config))
        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).set_license_manually!(license) }
    end

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

    def self.modifying
      checksum_before_modifying = if File.exists? LicenseFinder.config.database_uri
                                    Digest::SHA2.file(LicenseFinder.config.database_uri).hexdigest
                                  end
      result = yield
      checksum_after_modifying = Digest::SHA2.file(LicenseFinder.config.database_uri).hexdigest

      unless checksum_after_modifying == checksum_before_modifying
        Reporter.write_reports
      end
      unless File.exists? LicenseFinder.config.dependencies_html
        Reporter.write_reports
      end

      result
    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
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

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