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
16
17
18
19
20
21
22
|
# File 'lib/license_finder/package_managers/nuget.rb', line 16
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
24
25
26
27
28
29
30
31
|
# File 'lib/license_finder/package_managers/nuget.rb', line 24
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
44
45
46
|
# File 'lib/license_finder/package_managers/nuget.rb', line 44
def dependencies
assemblies.flat_map(&:dependencies)
end
|
#license_urls(dep) ⇒ Object
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/license_finder/package_managers/nuget.rb', line 33
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
9
10
11
12
13
14
|
# File 'lib/license_finder/package_managers/nuget.rb', line 6
def package_path
path = project_path.join("vendor/*.nupkg")
nuget_dir = Dir[path].map{|pkg| File.dirname(pkg)}.uniq
if nuget_dir.length == 0
project_path.join(".nuget")
else
Pathname(nuget_dir.first)
end
end
|