diff options
| author | mo khan <mo.khan@gmail.com> | 2020-05-27 14:59:20 +0000 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-05-27 14:59:20 +0000 |
| commit | 5b4aca6e3c936bca2657d1ad1a8f336838fda4bb (patch) | |
| tree | 2a5ba8dfc9bdb61c58633373be122ae2f83df1e7 /lib/license/management | |
| parent | bff873a938de126d2b79e799df325f3d5c31295b (diff) | |
| parent | 80fa34dd2bd72af88efcb85844302d04450a0e1e (diff) | |
Merge branch '212919-conan-integration-tests' into 'master'v3.10.0
Scan conan projects
See merge request gitlab-org/security-products/license-management!156
Diffstat (limited to 'lib/license/management')
| -rw-r--r-- | lib/license/management/python.rb | 6 | ||||
| -rw-r--r-- | lib/license/management/report.rb | 8 | ||||
| -rw-r--r-- | lib/license/management/report/v2.rb | 11 | ||||
| -rw-r--r-- | lib/license/management/report/v2_1.rb | 42 | ||||
| -rw-r--r-- | lib/license/management/version.rb | 2 |
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 |
