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