Class: LicenseFinder::Nuget

Inherits:
PackageManager show all
Defined in:
lib/license_finder/package_managers/nuget.rb

Defined Under Namespace

Classes: Assembly, Dependency

Instance Method Summary collapse

Methods inherited from PackageManager

#active?, #capture, command_exists?, current_packages, #current_packages_with_relations, #initialize, installed?, package_management_command, package_managers

Constructor Details

This class inherits a constructor from LicenseFinder::PackageManager

Instance Method Details

#assembliesObject



10
11
12
13
14
15
16
# File 'lib/license_finder/package_managers/nuget.rb', line 10

def assemblies
  Dir.glob(project_path.join("**", "packages.config"), File::FNM_DOTMATCH).map do |d|
    path = Pathname.new(d).dirname
    name = path.basename.to_s
    Assembly.new path, name
  end
end

#current_packagesObject



18
19
20
21
22
23
24
25
# File 'lib/license_finder/package_managers/nuget.rb', line 18

def current_packages
  dependencies.reduce({}) do |memo, dep|
    licenses = license_urls(dep)
    memo[dep.name] ||= NugetPackage.new(dep.name, dep.version, spec_licenses: licenses)
    memo[dep.name].groups << dep.assembly if !memo[dep.name].groups.include? dep.assembly
    memo
  end.values
end

#dependenciesObject



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

def dependencies
  assemblies.flat_map(&:dependencies)
end

#license_urls(dep) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/license_finder/package_managers/nuget.rb', line 27

def license_urls dep
  files = Dir["**/#{dep.name}.#{dep.version}.nupkg"]
  return nil if files.empty?
  file = files.first
  Zip::File.open file do |zipfile|
    content = zipfile.read(dep.name + ".nuspec")
    xml = REXML::Document.new(content)
    REXML::XPath.match(xml,"//metadata//licenseUrl").map(&:get_text)
  end
end

#package_pathObject



6
7
8
# File 'lib/license_finder/package_managers/nuget.rb', line 6

def package_path
  project_path.join('.nuget')
end