diff options
| author | Can Eldem <celdem@gitlab.com> | 2020-05-20 11:31:45 +0000 |
|---|---|---|
| committer | Can Eldem <celdem@gitlab.com> | 2020-05-20 11:31:45 +0000 |
| commit | ffe3851eaf675da0bc82f144c48b7b16cc43d989 (patch) | |
| tree | 89d60e6d19f984ac8f28a0638da2c1c6c192d5ef /lib/license | |
| parent | 7b8a9fce94fa4c457563ed150fae4d4043315265 (diff) | |
| parent | 2d749e4d514b9b5b053879c38ec11ffd83107646 (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.rb | 1 | ||||
| -rw-r--r-- | lib/license/finder/ext/bower.rb | 54 | ||||
| -rw-r--r-- | lib/license/management/version.rb | 2 |
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 |
