diff options
| author | mo khan <mo.khan@gmail.com> | 2020-05-19 12:28:08 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-05-19 12:28:08 -0600 |
| commit | 8805762269ed3d93197562eb4af8a56e9be00863 (patch) | |
| tree | bfef37aaed9bcbcb8a28e6d6d4eda0d9256ec2c5 /lib | |
| parent | ee7b5af4bd860f373cb3744329152f9c837f3cd1 (diff) | |
Flatten dependencies
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/license/finder/ext/bower.rb | 52 |
1 files changed, 23 insertions, 29 deletions
diff --git a/lib/license/finder/ext/bower.rb b/lib/license/finder/ext/bower.rb index 53d5f5e..f616b43 100644 --- a/lib/license/finder/ext/bower.rb +++ b/lib/license/finder/ext/bower.rb @@ -7,9 +7,7 @@ module LicenseFinder end def current_packages - bower_output.map do |bower_module| - map_all(bower_module) - end.flatten + map_all(bower_output).flatten.compact end def possible_package_paths @@ -22,36 +20,32 @@ module LicenseFinder stdout, _stderr, status = Dir.chdir(project_path) do shell.execute([:bower, :list, '--json', '-l', 'action', '--allow-root']) end - return [] unless status.success? + return {} unless status.success? - json = JSON.parse(stdout) - json.fetch('dependencies', {}).values + JSON.parse(stdout) end - def map_all(bower_module) - items = [] - spec = bower_module.fetch('pkgMeta', {}) - - if spec.empty? - endpoint = bower_module.fetch('endpoint', {}) - items << Package.new( - endpoint['name'], - endpoint['target'], - install_path: bower_module['canonicalDir'] - ) - else - items << Package.new( - spec['name'], - spec['version'], - summary: spec['description'], - description: spec['readme'], - homepage: spec['homepage'], - spec_licenses: Package.license_names_from_standard_spec(spec), - install_path: bower_module['canonicalDir'] - ) - end + def map_all(modules) + [map_from(modules)] + + modules.fetch('dependencies', {}).values.map { |x| map_all(x) } + end - items + bower_module.fetch('dependencies', {}).values.map { |x| map_all(x) } + def map_from(bower_module) + meta = bower_module.fetch('pkgMeta', {}) + endpoint = bower_module.fetch('endpoint', {}) + name = meta['name'] || endpoint['name'] + version = meta['version'] || endpoint['target'] + return if name == 'bower' + + Package.new( + name, + version, + summary: meta['description'], + description: meta['readme'], + homepage: meta['homepage'], + spec_licenses: Package.license_names_from_standard_spec(meta), + install_path: bower_module['canonicalDir'] + ) end end end |
