From a1a7ffac520d6db8937395daf84bb8ef770158bb Mon Sep 17 00:00:00 2001 From: mo khan Date: Wed, 29 Jan 2020 15:20:32 -0700 Subject: Use catalogue class to parse SPDX data --- Gemfile.lock | 18 ++++++++++++++---- lib/license/management.rb | 4 +++- lib/license/management/repository.rb | 23 ++++++----------------- license-management.gemspec | 2 +- 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 -- cgit v1.2.3