diff options
| author | Can Eldem <celdem@gitlab.com> | 2020-03-20 10:31:37 +0000 |
|---|---|---|
| committer | Can Eldem <celdem@gitlab.com> | 2020-03-20 10:31:37 +0000 |
| commit | d9ddfb4662dc3d9ba283e7832f6d1ec0e1451d25 (patch) | |
| tree | 417c4a313b1d6428c1a43f38278d2c828a36b293 /lib/license | |
| parent | df97efaccfc0a5d4e3ef564e74c60987f65ff6fa (diff) | |
| parent | 43fec0e1e3151371929139c4f67c43e7f81f1a80 (diff) | |
Merge branch 'java-maven-multimodules' into 'master'v3.1.2
Detect all licenses for maven multi-module projects.
See merge request gitlab-org/security-products/license-management!123
Diffstat (limited to 'lib/license')
| -rw-r--r-- | lib/license/finder/ext.rb | 1 | ||||
| -rw-r--r-- | lib/license/finder/ext/maven.rb | 43 | ||||
| -rw-r--r-- | lib/license/finder/ext/shared_helpers.rb | 8 | ||||
| -rw-r--r-- | lib/license/management.rb | 11 | ||||
| -rw-r--r-- | lib/license/management/loggable.rb | 6 | ||||
| -rw-r--r-- | lib/license/management/report/base.rb | 2 | ||||
| -rw-r--r-- | lib/license/management/version.rb | 2 |
7 files changed, 55 insertions, 18 deletions
diff --git a/lib/license/finder/ext.rb b/lib/license/finder/ext.rb index 9788abb..c17ffea 100644 --- a/lib/license/finder/ext.rb +++ b/lib/license/finder/ext.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require 'license/finder/ext/license' +require 'license/finder/ext/maven' require 'license/finder/ext/nuget' require 'license/finder/ext/shared_helpers' diff --git a/lib/license/finder/ext/maven.rb b/lib/license/finder/ext/maven.rb new file mode 100644 index 0000000..954d18d --- /dev/null +++ b/lib/license/finder/ext/maven.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module LicenseFinder + Maven.class_eval do + XML_PARSE_OPTIONS = { + 'ForceArray' => %w[license dependency], + 'GroupTags' => { + 'licenses' => 'license', + 'dependencies' => 'dependency' + } + }.freeze + + def current_packages + Dir.chdir(project_path) do + LicenseFinder::SharedHelpers::Cmd.run(detect_licenses_command) + resource_files.flat_map { |file| map_from(file.read) }.uniq + end + end + + private + + def detect_licenses_command + [ + package_management_command, + "-e", + "org.codehaus.mojo:license-maven-plugin:aggregate-download-licenses", + "-Dlicense.excludedScopes=#{@ignored_groups.to_a.join(',')}", + ENV.fetch('MAVEN_CLI_OPTS', '-DskipTests') + ].join(' ') + end + + def resource_files + Pathname.glob(project_path.join('**', 'target', 'generated-resources', 'licenses.xml')) + end + + def map_from(xml) + ::License::Management.logger.debug(xml) + XmlSimple + .xml_in(xml, XML_PARSE_OPTIONS)['dependencies'] + .map { |dependency| MavenPackage.new(dependency) } + end + end +end diff --git a/lib/license/finder/ext/shared_helpers.rb b/lib/license/finder/ext/shared_helpers.rb index 4e61261..bc37b9c 100644 --- a/lib/license/finder/ext/shared_helpers.rb +++ b/lib/license/finder/ext/shared_helpers.rb @@ -5,15 +5,9 @@ module LicenseFinder class Cmd def self.run(command) stdout, stderr, status = Open3.capture3(command) - debug([command, stdout].join('\n')) + ::License::Management.logger.debug([command, stdout].join('\n')) [stdout, stderr, status] end - - def self.debug(message) - return unless ENV['CI_DEBUG_TRACE'] == 'true' - - ::LicenseFinder::Core.default_logger.info(self.class, message) - end end end end diff --git a/lib/license/management.rb b/lib/license/management.rb index bfcf54c..a39c841 100644 --- a/lib/license/management.rb +++ b/lib/license/management.rb @@ -1,8 +1,10 @@ # frozen_string_literal: true +require 'json' +require 'logger' require 'pathname' require 'yaml' -require 'json' + require 'license_finder' require 'license/management/loggable' require 'license/management/verifiable' @@ -18,11 +20,8 @@ module License Pathname.new(File.dirname(__FILE__)).join('../..') end - def self.http - @http ||= Net::Hippie::Client.new.tap do |client| - client.logger = ::Logger.new('http.log') - client.follow_redirects = 3 - end + def self.logger + @logger ||= Logger.new(STDOUT) end end end diff --git a/lib/license/management/loggable.rb b/lib/license/management/loggable.rb index 165d8ca..0122018 100644 --- a/lib/license/management/loggable.rb +++ b/lib/license/management/loggable.rb @@ -4,15 +4,15 @@ module License module Management module Loggable def logger - ::LicenseFinder::Core.default_logger + License::Management.logger end def log_info(message) - logger.info(self.class, message) + logger.info(message) end def log_error(message) - logger.info(self.class, message, color: :red) + logger.error(message) end end end diff --git a/lib/license/management/report/base.rb b/lib/license/management/report/base.rb index 2d49341..0155c15 100644 --- a/lib/license/management/report/base.rb +++ b/lib/license/management/report/base.rb @@ -26,7 +26,7 @@ module License paths = dependency.aggregate_paths return [] if blank?(paths) - paths.map { |x| x.gsub(Dir.pwd, '.') } + paths.map { |x| x.gsub(Dir.pwd, '.') }.sort end def description_for(dependency) diff --git a/lib/license/management/version.rb b/lib/license/management/version.rb index 308a738..9b8fdc3 100644 --- a/lib/license/management/version.rb +++ b/lib/license/management/version.rb @@ -2,6 +2,6 @@ module License module Management - VERSION = '3.1.1' + VERSION = '3.1.2' end end |
