summaryrefslogtreecommitdiff
path: root/lib/license/management
diff options
context:
space:
mode:
Diffstat (limited to 'lib/license/management')
-rw-r--r--lib/license/management/python.rb6
-rw-r--r--lib/license/management/report.rb8
-rw-r--r--lib/license/management/report/v2.rb11
-rw-r--r--lib/license/management/report/v2_1.rb42
-rw-r--r--lib/license/management/version.rb2
5 files changed, 59 insertions, 10 deletions
diff --git a/lib/license/management/python.rb b/lib/license/management/python.rb
index b8932f9..ccf53e9 100644
--- a/lib/license/management/python.rb
+++ b/lib/license/management/python.rb
@@ -24,7 +24,7 @@ module License
ENV.fetch('PIP_INDEX_URL', 'https://pypi.org/simple/')
end
- def pip_licenses(venv: '.venv')
+ def pip_licenses(venv: '.venv', detection_path:)
_stdout, _stderr, status = shell.sh([
". #{venv}/bin/activate &&",
:pip, :install,
@@ -41,10 +41,12 @@ module License
return [] unless status.success?
JSON.parse(IO.read('pip-licenses.json')).map do |dependency|
- ::LicenseFinder::Package.new(
+ ::LicenseFinder::Dependency.new(
+ 'Pip',
dependency['Name'],
dependency['Version'],
description: dependency['Description'],
+ detection_path: detection_path,
homepage: dependency['URL'],
spec_licenses: [dependency['License']]
)
diff --git a/lib/license/management/report.rb b/lib/license/management/report.rb
index b1bf9ed..a3dbf20 100644
--- a/lib/license/management/report.rb
+++ b/lib/license/management/report.rb
@@ -4,19 +4,21 @@ require 'license/management/report/base'
require 'license/management/report/v1'
require 'license/management/report/v1_1'
require 'license/management/report/v2'
+require 'license/management/report/v2_1'
module License
module Management
module Report
- DEFAULT_VERSION = '2'
+ DEFAULT_VERSION = '2.0'
VERSIONS = {
nil => V1,
'' => V1,
'1' => V1,
'1.0' => V1,
'1.1' => V1_1,
- '2' => V2,
- '2.0' => V2
+ '2' => V2_1,
+ '2.0' => V2,
+ '2.1' => V2_1
}.freeze
# This method overrides the method defined in `LicenseFinder::JsonReport` to
diff --git a/lib/license/management/report/v2.rb b/lib/license/management/report/v2.rb
index e0b4980..ac43f53 100644
--- a/lib/license/management/report/v2.rb
+++ b/lib/license/management/report/v2.rb
@@ -30,18 +30,21 @@ module License
end
def map_from(dependency)
- licenses = dependency.licenses.map { |license| data_for(license)['id'] }.sort
- log(dependency, licenses)
-
{
name: dependency.name,
url: dependency.homepage,
description: description_for(dependency),
paths: paths_from(dependency),
- licenses: licenses
+ licenses: licenses_for(dependency)
}
end
+ def licenses_for(dependency)
+ licenses = dependency.licenses.map { |license| data_for(license)['id'] }.sort
+ log(dependency, licenses)
+ licenses
+ end
+
def log(dependency, licenses)
logger.info { [dependency.name, dependency.version, licenses].flatten.join(' ') }
return unless licenses == ['unknown']
diff --git a/lib/license/management/report/v2_1.rb b/lib/license/management/report/v2_1.rb
new file mode 100644
index 0000000..7589219
--- /dev/null
+++ b/lib/license/management/report/v2_1.rb
@@ -0,0 +1,42 @@
+# frozen_string_literal: true
+
+module License
+ module Management
+ module Report
+ class V2_1 < V2
+ def to_h
+ super.merge(version: '2.1')
+ end
+
+ private
+
+ def license_summary
+ all_licenses
+ .map { |license| data_for(license) }
+ .uniq { |data| data['id'] }
+ .sort_by { |data| data['id'] }
+ end
+
+ def map_from(dependency)
+ {
+ name: dependency.name,
+ version: dependency.version,
+ package_manager: dependency.package_manager.downcase.to_sym,
+ path: detection_path_for(dependency),
+ licenses: licenses_for(dependency)
+ }
+ end
+
+ def detection_path_for(dependency)
+ dependency = dependency.dependency if dependency.instance_of?(LicenseFinder::MergedPackage)
+
+ if dependency.respond_to?(:detection_path)
+ dependency.detection_path.relative_path_from(Pathname.pwd).to_s
+ else
+ '.'
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/license/management/version.rb b/lib/license/management/version.rb
index f3e2116..595ee3a 100644
--- a/lib/license/management/version.rb
+++ b/lib/license/management/version.rb
@@ -2,6 +2,6 @@
module License
module Management
- VERSION = '3.9.2'
+ VERSION = '3.10.0'
end
end