Class: GemGuard::Config
- Inherits:
-
Object
- Object
- GemGuard::Config
- Defined in:
- lib/gem_guard/config.rb
Constant Summary collapse
- DEFAULT_CONFIG =
{ "lockfile" => "Gemfile.lock", "format" => "table", "fail_on_vulnerabilities" => true, "severity_threshold" => "low", "ignore_vulnerabilities" => [], "ignore_gems" => [], "output_file" => nil, "project_name" => nil, "sbom" => { "format" => "spdx", "include_dev_dependencies" => false }, "scan" => { "sources" => ["osv", "ruby_advisory_db", "ghsa", "nvd", "cu_advisory_db"], "timeout" => 30 } }.freeze
- SEVERITY_LEVELS =
%w[low medium high critical].freeze
Instance Method Summary collapse
- #exists? ⇒ Boolean
- #fail_on_vulnerabilities? ⇒ Boolean
- #get(key) ⇒ Object
- #ignored_gems ⇒ Object
- #ignored_vulnerabilities ⇒ Object
- #include_dev_dependencies? ⇒ Boolean
-
#initialize(config_path = ".gemguard.yml") ⇒ Config
constructor
A new instance of Config.
- #lockfile_path ⇒ Object
- #meets_severity_threshold?(severity) ⇒ Boolean
- #output_file ⇒ Object
- #output_format ⇒ Object
- #project_name ⇒ Object
- #save ⇒ Object
- #sbom_format ⇒ Object
- #scan_timeout ⇒ Object
- #set(key, value) ⇒ Object
- #severity_threshold ⇒ Object
- #should_ignore_gem?(gem_name) ⇒ Boolean
- #should_ignore_vulnerability?(vulnerability_id) ⇒ Boolean
- #vulnerability_sources ⇒ Object
Constructor Details
#initialize(config_path = ".gemguard.yml") ⇒ Config
Returns a new instance of Config.
26 27 28 29 |
# File 'lib/gem_guard/config.rb', line 26 def initialize(config_path = ".gemguard.yml") @config_path = config_path @config = load_config end |
Instance Method Details
#exists? ⇒ Boolean
58 59 60 |
# File 'lib/gem_guard/config.rb', line 58 def exists? File.exist?(@config_path) end |
#fail_on_vulnerabilities? ⇒ Boolean
70 71 72 |
# File 'lib/gem_guard/config.rb', line 70 def fail_on_vulnerabilities? get("fail_on_vulnerabilities") end |
#get(key) ⇒ Object
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/gem_guard/config.rb', line 31 def get(key) keys = key.split(".") value = @config keys.each do |k| value = value[k] if value.is_a?(Hash) end value end |
#ignored_gems ⇒ Object
82 83 84 |
# File 'lib/gem_guard/config.rb', line 82 def ignored_gems get("ignore_gems") || [] end |
#ignored_vulnerabilities ⇒ Object
78 79 80 |
# File 'lib/gem_guard/config.rb', line 78 def ignored_vulnerabilities get("ignore_vulnerabilities") || [] end |
#include_dev_dependencies? ⇒ Boolean
98 99 100 |
# File 'lib/gem_guard/config.rb', line 98 def include_dev_dependencies? get("sbom.include_dev_dependencies") end |
#lockfile_path ⇒ Object
62 63 64 |
# File 'lib/gem_guard/config.rb', line 62 def lockfile_path get("lockfile") end |
#meets_severity_threshold?(severity) ⇒ Boolean
118 119 120 121 122 123 124 125 126 127 |
# File 'lib/gem_guard/config.rb', line 118 def meets_severity_threshold?(severity) return true if severity.nil? || severity.empty? severity_index = SEVERITY_LEVELS.index(severity.downcase) threshold_index = SEVERITY_LEVELS.index(severity_threshold.downcase) return true if severity_index.nil? || threshold_index.nil? severity_index >= threshold_index end |
#output_file ⇒ Object
86 87 88 |
# File 'lib/gem_guard/config.rb', line 86 def output_file get("output_file") end |
#output_format ⇒ Object
66 67 68 |
# File 'lib/gem_guard/config.rb', line 66 def output_format get("format") end |
#project_name ⇒ Object
90 91 92 |
# File 'lib/gem_guard/config.rb', line 90 def project_name get("project_name") || detect_project_name end |
#save ⇒ Object
54 55 56 |
# File 'lib/gem_guard/config.rb', line 54 def save File.write(@config_path, YAML.dump(@config)) end |
#sbom_format ⇒ Object
94 95 96 |
# File 'lib/gem_guard/config.rb', line 94 def sbom_format get("sbom.format") end |
#scan_timeout ⇒ Object
106 107 108 |
# File 'lib/gem_guard/config.rb', line 106 def scan_timeout get("scan.timeout") end |
#set(key, value) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/gem_guard/config.rb', line 42 def set(key, value) keys = key.split(".") target = @config keys[0..-2].each do |k| target[k] ||= {} target = target[k] end target[keys.last] = value end |
#severity_threshold ⇒ Object
74 75 76 |
# File 'lib/gem_guard/config.rb', line 74 def severity_threshold get("severity_threshold") end |
#should_ignore_gem?(gem_name) ⇒ Boolean
114 115 116 |
# File 'lib/gem_guard/config.rb', line 114 def should_ignore_gem?(gem_name) ignored_gems.include?(gem_name) end |
#should_ignore_vulnerability?(vulnerability_id) ⇒ Boolean
110 111 112 |
# File 'lib/gem_guard/config.rb', line 110 def should_ignore_vulnerability?(vulnerability_id) ignored_vulnerabilities.include?(vulnerability_id) end |
#vulnerability_sources ⇒ Object
102 103 104 |
# File 'lib/gem_guard/config.rb', line 102 def vulnerability_sources get("scan.sources") end |