summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-05-19 12:28:08 -0600
committermo khan <mo.khan@gmail.com>2020-05-19 12:28:08 -0600
commit8805762269ed3d93197562eb4af8a56e9be00863 (patch)
treebfef37aaed9bcbcb8a28e6d6d4eda0d9256ec2c5 /lib
parentee7b5af4bd860f373cb3744329152f9c837f3cd1 (diff)
Flatten dependencies
Diffstat (limited to 'lib')
-rw-r--r--lib/license/finder/ext/bower.rb52
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