diff options
| author | mo khan <mo.khan@gmail.com> | 2020-04-13 10:49:11 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-04-13 10:49:11 -0600 |
| commit | 44c0d2b75ea2c815d86c5c211410cb1e0a2a498f (patch) | |
| tree | 5bd11175d7772aced3bdc5051057071c2e855470 | |
| parent | 6a901f291714ec319e9cd027d12aa5f42b12a9dd (diff) | |
Extract singletons for git dbs
| -rw-r--r-- | .rspec | 1 | ||||
| -rw-r--r-- | lib/spandx.rb | 10 | ||||
| -rw-r--r-- | lib/spandx/core/cache.rb | 13 | ||||
| -rw-r--r-- | lib/spandx/core/license_plugin.rb | 5 | ||||
| -rw-r--r-- | lib/spandx/spdx/catalogue.rb | 2 | ||||
| -rw-r--r-- | lib/spandx/spdx/license.rb | 2 | ||||
| -rw-r--r-- | spec/fixtures/js/yarn/long_yarn.lock.expected (renamed from spec/fixtures/js/yarn/lol) | 0 | ||||
| -rw-r--r-- | spec/integration/core/cache_spec.rb | 8 | ||||
| -rw-r--r-- | spec/unit/js/parsers/yarn_spec.rb | 2 | ||||
| -rw-r--r-- | tmp/.keep | 0 |
10 files changed, 19 insertions, 24 deletions
@@ -1,3 +1,4 @@ --format progress +--format ParallelTests::RSpec::RuntimeLogger --out tmp/parallel_runtime_rspec.log --color --require spec_helper diff --git a/lib/spandx.rb b/lib/spandx.rb index e75e9b2..8e764d2 100644 --- a/lib/spandx.rb +++ b/lib/spandx.rb @@ -37,10 +37,12 @@ module Spandx @logger ||= Logger.new('/dev/null') end - def spdx_db - @spdx_db ||= Spandx::Core::Database - .new(url: 'https://github.com/spdx/license-list-data.git') - .tap(&:update!) + def git + @git ||= { + cache: ::Spandx::Core::Database.new(url: 'https://github.com/mokhan/spandx-index.git'), + rubygems: ::Spandx::Core::Database.new(url: 'https://github.com/mokhan/spandx-rubygems.git'), + spdx: ::Spandx::Core::Database.new(url: 'https://github.com/spdx/license-list-data.git'), + } end end end diff --git a/lib/spandx/core/cache.rb b/lib/spandx/core/cache.rb index 71f254e..362648d 100644 --- a/lib/spandx/core/cache.rb +++ b/lib/spandx/core/cache.rb @@ -5,9 +5,9 @@ module Spandx class Cache attr_reader :db, :package_manager - def initialize(package_manager, url:) + def initialize(package_manager, db: Spandx.git[:cache]) @package_manager = package_manager - @db = ::Spandx::Core::Database.new(url: url) + @db = db @cache = {} @lines = {} end @@ -18,15 +18,6 @@ module Spandx found ? found[2].split('-|-') : [] end - def self.for(package_manager) - @caches ||= {} - @caches.fetch(package_manager) do |key| - repo = package_manager.to_sym == :rubygems ? 'rubygems' : 'index' - cache = new(package_manager, url: "https://github.com/mokhan/spandx-#{repo}.git") - @caches[key] = cache - end - end - private def digest_for(components) diff --git a/lib/spandx/core/license_plugin.rb b/lib/spandx/core/license_plugin.rb index 924eb60..ceeac90 100644 --- a/lib/spandx/core/license_plugin.rb +++ b/lib/spandx/core/license_plugin.rb @@ -24,8 +24,9 @@ module Spandx results && !results.empty? ? results : gateway_for(dependency).licenses_for(dependency) end - def cache_for(dependency) - Cache.for(dependency.package_manager) + def cache_for(dependency, git: Spandx.git) + db = git[dependency.package_manager.to_sym] || git[:cache] + Spandx::Core::Cache.new(dependency.package_manager, db: db) end def known?(package_manager) diff --git a/lib/spandx/spdx/catalogue.rb b/lib/spandx/spdx/catalogue.rb index 66c326e..371c3bd 100644 --- a/lib/spandx/spdx/catalogue.rb +++ b/lib/spandx/spdx/catalogue.rb @@ -37,7 +37,7 @@ module Spandx end def from_git - from_json(Spandx.spdx_db.read('json/licenses.json')) + from_json(Spandx.git[:spdx].read('json/licenses.json')) end def empty diff --git a/lib/spandx/spdx/license.rb b/lib/spandx/spdx/license.rb index 6b2082f..6bfb81a 100644 --- a/lib/spandx/spdx/license.rb +++ b/lib/spandx/spdx/license.rb @@ -84,7 +84,7 @@ module Spandx private def raw_content - @raw_content ||= (Spandx.spdx_db.read("text/#{id}.txt") || '') + @raw_content ||= (Spandx.git[:spdx].read("text/#{id}.txt") || '') end end end diff --git a/spec/fixtures/js/yarn/lol b/spec/fixtures/js/yarn/long_yarn.lock.expected index 2208afc..2208afc 100644 --- a/spec/fixtures/js/yarn/lol +++ b/spec/fixtures/js/yarn/long_yarn.lock.expected diff --git a/spec/integration/core/cache_spec.rb b/spec/integration/core/cache_spec.rb index db8def2..8f56c55 100644 --- a/spec/integration/core/cache_spec.rb +++ b/spec/integration/core/cache_spec.rb @@ -1,9 +1,9 @@ # frozen_string_literal: true RSpec.describe Spandx::Core::Cache do - RSpec.shared_examples 'each data file' do |package_manager, url| + RSpec.shared_examples 'each data file' do |package_manager, key| describe "#licenses_for (#{package_manager})" do - subject { described_class.new(package_manager, url: url) } + subject { described_class.new(package_manager, db: Spandx.git[key]) } (0x00..0xFF).map { |x| x.to_s(16).upcase.rjust(2, '0').downcase }.each do |hex| context hex do @@ -24,6 +24,6 @@ RSpec.describe Spandx::Core::Cache do end end - include_examples 'each data file', 'rubygems', 'https://github.com/mokhan/spandx-rubygems.git' - include_examples 'each data file', 'nuget', 'https://github.com/mokhan/spandx-index.git' + include_examples 'each data file', 'rubygems', :rubygems + include_examples 'each data file', 'nuget', :cache end diff --git a/spec/unit/js/parsers/yarn_spec.rb b/spec/unit/js/parsers/yarn_spec.rb index 93e8eb5..4e1fdb2 100644 --- a/spec/unit/js/parsers/yarn_spec.rb +++ b/spec/unit/js/parsers/yarn_spec.rb @@ -20,7 +20,7 @@ RSpec.describe Spandx::Js::Parsers::Yarn do describe '#parse long lock file' do let(:lockfile) { fixture_file('js/yarn/long_yarn.lock') } - let(:expected_dependencies) { fixture_file_content('js/yarn/lol').lines.map(&:chomp) } + let(:expected_dependencies) { fixture_file_content('js/yarn/long_yarn.lock.expected').lines.map(&:chomp) } let(:result) { subject.parse(lockfile) } specify { expect(result.map { |x| "#{x.name}@#{x.version}" }) .to match_array(expected_dependencies) } diff --git a/tmp/.keep b/tmp/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tmp/.keep |
