lib/license_finder/packages/bower_package.rb
# frozen_string_literal: true
require 'open-uri'
module LicenseFinder
class BowerPackage < Package
def initialize(bower_module, options = {})
spec = bower_module.fetch('pkgMeta', {})
if spec.empty?
endpoint = bower_module.fetch('endpoint', {})
name = endpoint['name']
version = endpoint['target']
else
name = spec['name']
version = spec['version']
end
super(
name,
version,
options.merge(
summary: spec['description'],
description: spec['readme'],
homepage: spec['homepage'],
spec_licenses: Package.license_names_from_standard_spec(spec),
install_path: bower_module['canonicalDir'],
missing: bower_module['missing']
)
)
end
def package_manager
'Bower'
end
def package_url
meta = if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.5.0')
JSON.parse(open("https://registry.bower.io/packages/#{CGI.escape(name)}").read)
else
JSON.parse(URI.open("https://registry.bower.io/packages/#{CGI.escape(name)}").read)
end
meta['url']
end
end
end