Class: LicenseFinder::Nuget
Defined Under Namespace
Classes: Assembly, Dependency
Instance Method Summary
collapse
#active?, #capture, command_exists?, current_packages, #current_packages_with_relations, #initialize, installed?, package_management_command, package_managers
Instance Method Details
#assemblies ⇒ Object
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_packages ⇒ Object
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
|
#dependencies ⇒ Object
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_path ⇒ Object
6
7
8
|
# File 'lib/license_finder/package_managers/nuget.rb', line 6
def package_path
project_path.join('.nuget')
end
|