summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/license/finder/ext.rb1
-rw-r--r--lib/license/finder/ext/maven.rb43
-rw-r--r--lib/license/finder/ext/shared_helpers.rb8
-rw-r--r--lib/license/management.rb11
-rw-r--r--lib/license/management/loggable.rb6
-rw-r--r--lib/license/management/report/base.rb2
-rw-r--r--lib/license/management/version.rb2
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