summaryrefslogtreecommitdiff
path: root/lib/license
diff options
context:
space:
mode:
authorCan Eldem <celdem@gitlab.com>2020-05-20 11:31:45 +0000
committerCan Eldem <celdem@gitlab.com>2020-05-20 11:31:45 +0000
commitffe3851eaf675da0bc82f144c48b7b16cc43d989 (patch)
tree89d60e6d19f984ac8f28a0638da2c1c6c192d5ef /lib/license
parent7b8a9fce94fa4c457563ed150fae4d4043315265 (diff)
parent2d749e4d514b9b5b053879c38ec11ffd83107646 (diff)
Merge branch '212923-bower-offline' into 'master'v3.9.1
Add support for bower in offline environment See merge request gitlab-org/security-products/license-management!150
Diffstat (limited to 'lib/license')
-rw-r--r--lib/license/finder/ext.rb1
-rw-r--r--lib/license/finder/ext/bower.rb54
-rw-r--r--lib/license/management/version.rb2
3 files changed, 56 insertions, 1 deletions
diff --git a/lib/license/finder/ext.rb b/lib/license/finder/ext.rb
index 3d8a463..3c56c7a 100644
--- a/lib/license/finder/ext.rb
+++ b/lib/license/finder/ext.rb
@@ -1,5 +1,6 @@
# frozen_string_literal: true
+require 'license/finder/ext/bower'
require 'license/finder/ext/go_modules'
require 'license/finder/ext/gradle'
require 'license/finder/ext/license'
diff --git a/lib/license/finder/ext/bower.rb b/lib/license/finder/ext/bower.rb
new file mode 100644
index 0000000..ccfa7ee
--- /dev/null
+++ b/lib/license/finder/ext/bower.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+module LicenseFinder
+ class Bower < PackageManager
+ def prepare
+ shell.execute([:bower, :install, '--allow-root'], env: default_env)
+ end
+
+ def current_packages
+ map_all(bower_output).flatten.compact
+ end
+
+ def possible_package_paths
+ [project_path.join('bower.json')]
+ end
+
+ private
+
+ def bower_output
+ stdout, _stderr, status = Dir.chdir(project_path) do
+ shell.execute([:bower, :list, '--json', '-l', 'action', '--allow-root'])
+ end
+ return {} unless status.success?
+
+ JSON.parse(stdout)
+ end
+
+ def map_all(modules)
+ [map_from(modules)] +
+ modules.fetch('dependencies', {}).values.map { |x| map_all(x) }
+ end
+
+ def map_from(bower_module)
+ meta = bower_module.fetch('pkgMeta', {})
+ endpoint = bower_module.fetch('endpoint', {})
+
+ Package.new(
+ meta['name'] || endpoint['name'],
+ meta['version'] || endpoint['target'],
+ summary: meta['description'],
+ description: meta['readme'],
+ homepage: meta['homepage'],
+ spec_licenses: Package.license_names_from_standard_spec(meta),
+ install_path: bower_module['canonicalDir']
+ )
+ end
+
+ def default_env
+ return {} unless shell.custom_certificate_installed?
+
+ { 'NPM_CONFIG_CAFILE' => ENV.fetch('NPM_CONFIG_CAFILE', shell.custom_certificate_path.to_s) }
+ end
+ end
+end
diff --git a/lib/license/management/version.rb b/lib/license/management/version.rb
index b5d5bc9..0fe76f1 100644
--- a/lib/license/management/version.rb
+++ b/lib/license/management/version.rb
@@ -2,6 +2,6 @@
module License
module Management
- VERSION = '3.9.0'
+ VERSION = '3.9.1'
end
end