summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-01-29 15:20:32 -0700
committermo khan <mo.khan@gmail.com>2020-01-29 15:20:32 -0700
commita1a7ffac520d6db8937395daf84bb8ef770158bb (patch)
tree5016a70448b1ce50a3ce193ed36e658056e853ed
parent708be60d84c257d2ae8784d091c24a75c602f7c5 (diff)
Use catalogue class to parse SPDX data
-rw-r--r--Gemfile.lock18
-rw-r--r--lib/license/management.rb4
-rw-r--r--lib/license/management/repository.rb23
-rw-r--r--license-management.gemspec2
4 files changed, 24 insertions, 23 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index bddd908..abc37ef 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -3,7 +3,7 @@ PATH
specs:
license-management (2.4.1)
license_finder (~> 5.11)
- net-hippie (~> 0.3)
+ spandx (~> 0.2)
GEM
remote: https://rubygems.org/
@@ -20,7 +20,10 @@ GEM
toml (= 0.2.0)
with_env (= 1.1.0)
xml-simple
- net-hippie (0.3.1)
+ mini_portile2 (2.4.0)
+ net-hippie (0.3.2)
+ nokogiri (1.10.7)
+ mini_portile2 (~> 2.4.0)
parslet (1.8.2)
public_suffix (4.0.3)
rspec (3.9.0)
@@ -36,8 +39,15 @@ GEM
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0)
rspec-support (3.9.2)
- rubyzip (2.0.0)
- thor (1.0.1)
+ rubyzip (2.1.0)
+ spandx (0.2.0)
+ bundler (>= 1.16, < 3.0.0)
+ net-hippie (~> 0.3)
+ nokogiri (~> 1.10)
+ text (~> 1.3)
+ thor (~> 0.1)
+ text (1.3.1)
+ thor (0.20.3)
toml (0.2.0)
parslet (~> 1.8.0)
with_env (1.1.0)
diff --git a/lib/license/management.rb b/lib/license/management.rb
index ebab5e2..7e80deb 100644
--- a/lib/license/management.rb
+++ b/lib/license/management.rb
@@ -1,8 +1,10 @@
# frozen_string_literal: true
+require 'json'
require 'pathname'
+require 'spandx'
require 'yaml'
-require 'json'
+
require 'license_finder'
require 'license/management/loggable'
require 'license/management/verifiable'
diff --git a/lib/license/management/repository.rb b/lib/license/management/repository.rb
index 9490af2..fd26b59 100644
--- a/lib/license/management/repository.rb
+++ b/lib/license/management/repository.rb
@@ -16,7 +16,7 @@ module License
spdx_path: License::Management.root.join('spdx-licenses.json')
)
@compatibility_data = YAML.safe_load(IO.read(compatibility_path))
- @spdx_data = load_spdx_data_from(spdx_path)
+ @catalogue = Spandx::Catalogue.from_file(spdx_path)
end
def item_for(license)
@@ -27,17 +27,17 @@ module License
private
- attr_reader :spdx_data, :compatibility_data
+ attr_reader :catalogue, :compatibility_data
def spdx_data_for(id)
return if blank?(id)
- data = spdx_data[id]
+ data = catalogue[id]
if data
{
- 'id' => data['licenseId'],
- 'name' => data['name'],
- 'url' => data['seeAlso'][-1]
+ 'id' => data.id,
+ 'name' => data.name,
+ 'url' => data.see_also[-1]
}
end
end
@@ -69,17 +69,6 @@ module License
}
end
- def load_spdx_data_from(path)
- content = IO.read(path)
- json = JSON.parse(content)
- licenses = json['licenses']
-
- licenses.inject({}) do |memo, license|
- memo[license['licenseId']] = license
- memo
- end
- end
-
def known_sources(url)
return if blank?(url)
return unless url =~ /\A#{::URI::DEFAULT_PARSER.make_regexp(['http', 'https'])}\z/
diff --git a/license-management.gemspec b/license-management.gemspec
index 60ab5e1..baf69c8 100644
--- a/license-management.gemspec
+++ b/license-management.gemspec
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
spec.require_paths = ['lib']
spec.add_dependency 'license_finder', '~> 5.11'
- spec.add_dependency 'net-hippie', '~> 0.3'
+ spec.add_dependency 'spandx', '~> 0.2'
spec.add_development_dependency 'json-schema', '~> 2.8'
spec.add_development_dependency 'rspec', '~> 3.9'
end