main
1# frozen_string_literal: true
2
3require 'addressable/uri'
4require 'bundler'
5require 'csv'
6require 'forwardable'
7require 'hcl2'
8require 'json'
9require 'logger'
10require 'net/hippie'
11require 'nokogiri'
12require 'oj'
13require 'parslet'
14require 'pathname'
15require 'sorted_set'
16require 'yaml'
17require 'zeitwerk'
18require 'spandx/spandx'
19
20loader = Zeitwerk::Loader.for_gem
21loader.setup # ready!
22
23module Spandx
24 class Error < StandardError; end
25 Rubygems = Ruby
26
27 class << self
28 attr_writer :airgap, :logger, :http, :git
29
30 def root
31 Pathname.new(File.dirname(__FILE__)).join('../..')
32 end
33
34 def airgap?
35 @airgap
36 end
37
38 def http
39 @http ||= Spandx::Core::Http.new
40 end
41
42 def logger
43 @logger ||= Logger.new('/dev/null')
44 end
45
46 def git
47 @git ||= {
48 cache: ::Spandx::Core::Git.new(url: 'https://github.com/spandx/cache.git'),
49 rubygems: ::Spandx::Core::Git.new(url: 'https://github.com/spandx/rubygems-cache.git'),
50 spdx: ::Spandx::Core::Git.new(url: 'https://github.com/spdx/license-list-data.git'),
51 }
52 end
53 end
54end
55
56loader.eager_load