Class: LicenseFinder::DependencyManager

Inherits:
Object
  • Object
show all
Defined in:
lib/license_finder/dependency_manager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ DependencyManager

Returns a new instance of DependencyManager.



7
8
9
# File 'lib/license_finder/dependency_manager.rb', line 7

def initialize options={}
  @logger = options[:logger] || LicenseFinder::Logger::Default.new
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



5
6
7
# File 'lib/license_finder/dependency_manager.rb', line 5

def logger
  @logger
end

Instance Method Details

#approve!(name, approver = nil, notes = nil) ⇒ Object



38
39
40
# File 'lib/license_finder/dependency_manager.rb', line 38

def approve!(name, approver = nil, notes = nil)
  modifying { find_by_name(name).approve!(approver, notes)  }
end

#license!(name, license_name) ⇒ Object



33
34
35
36
# File 'lib/license_finder/dependency_manager.rb', line 33

def license!(name, license_name)
  license = License.find_by_name(license_name)
  modifying { find_by_name(name).set_license_manually!(license) }
end

#manually_add(license, name, version) ⇒ Object

Raises:



19
20
21
22
23
24
25
26
27
# File 'lib/license_finder/dependency_manager.rb', line 19

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

  modifying {
    dependency = Dependency.new(added_manually: true, name: name, version: version)
    dependency.licenses = [License.find_by_name(license)].to_set
    dependency.save
  }
end

#manually_remove(name) ⇒ Object



29
30
31
# File 'lib/license_finder/dependency_manager.rb', line 29

def manually_remove(name)
  modifying { find_by_name(name, Dependency.added_manually).destroy }
end

#modifyingObject



42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/license_finder/dependency_manager.rb', line 42

def modifying
  checksum_before = checksum
  result = DB.transaction { yield }
  checksum_after = checksum

  database_changed = checksum_before != checksum_after

  if database_changed || reports_do_not_exist || reports_are_stale
    Reporter.write_reports
  end

  result
end

#sync_with_package_managers(options = {}) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/license_finder/dependency_manager.rb', line 11

def sync_with_package_managers options={}
  modifying {
    current_dependencies = PackageSaver.save_all(current_packages)

    Dependency.added_automatically.obsolete(current_dependencies).each(&:destroy)
  }
end