diff options
Diffstat (limited to 'lib')
| -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 |
