Class: StillActive::Config
- Inherits:
-
Object
- Object
- StillActive::Config
- Defined in:
- lib/still_active/config.rb
Instance Attribute Summary collapse
-
#alternatives ⇒ Object
Returns the value of attribute alternatives.
- #artifactory_host ⇒ Object
- #artifactory_token ⇒ Object
-
#baseline_path ⇒ Object
Returns the value of attribute baseline_path.
-
#critical_warning_emoji ⇒ Object
Returns the value of attribute critical_warning_emoji.
-
#cyclonedx_path ⇒ Object
Returns the value of attribute cyclonedx_path.
-
#cyclonedx_version ⇒ Object
Returns the value of attribute cyclonedx_version.
-
#direct_only ⇒ Object
Returns the value of attribute direct_only.
-
#ecosystems_email ⇒ Object
Codeberg/Forgejo has no ubiquitous CLI to borrow a token from (unlike gh/glab), so it's env-var only.
-
#fail_if_critical ⇒ Object
Returns the value of attribute fail_if_critical.
-
#fail_if_deprecated ⇒ Object
Returns the value of attribute fail_if_deprecated.
-
#fail_if_language_ceiling ⇒ Object
Returns the value of attribute fail_if_language_ceiling.
-
#fail_if_outdated ⇒ Object
Returns the value of attribute fail_if_outdated.
-
#fail_if_poison ⇒ Object
Returns the value of attribute fail_if_poison.
-
#fail_if_vulnerable ⇒ Object
Returns the value of attribute fail_if_vulnerable.
-
#fail_if_warning ⇒ Object
Returns the value of attribute fail_if_warning.
- #forgejo_token ⇒ Object
-
#futurist_emoji ⇒ Object
Returns the value of attribute futurist_emoji.
-
#gemfile_path ⇒ Object
Lazy so that running with --gems=...
-
#gems ⇒ Object
Returns the value of attribute gems.
- #github_oauth_token ⇒ Object
- #gitlab_token ⇒ Object
-
#ignored_gems ⇒ Object
Returns the value of attribute ignored_gems.
-
#no_warning_range_end ⇒ Object
Returns the value of attribute no_warning_range_end.
-
#output_format ⇒ Object
Returns the value of attribute output_format.
-
#parallelism ⇒ Object
Returns the value of attribute parallelism.
-
#sarif_path ⇒ Object
Returns the value of attribute sarif_path.
-
#sbom_path ⇒ Object
Returns the value of attribute sbom_path.
-
#success_emoji ⇒ Object
Returns the value of attribute success_emoji.
-
#suppressions ⇒ Object
Returns the value of attribute suppressions.
-
#unreleased_commits ⇒ Object
Returns the value of attribute unreleased_commits.
-
#unsure_emoji ⇒ Object
Returns the value of attribute unsure_emoji.
-
#warning_emoji ⇒ Object
Returns the value of attribute warning_emoji.
-
#warning_range_end ⇒ Object
Returns the value of attribute warning_range_end.
Instance Method Summary collapse
- #github_client ⇒ Object
-
#initialize ⇒ Config
constructor
A new instance of Config.
Constructor Details
#initialize ⇒ Config
Returns a new instance of Config.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/still_active/config.rb', line 39 def initialize @alternatives = false @unreleased_commits = false @direct_only = false @fail_if_critical = false @fail_if_deprecated = false @fail_if_poison = false @fail_if_language_ceiling = false @fail_if_outdated = nil @fail_if_vulnerable = nil @fail_if_warning = false @gemfile_path = nil @gems = [] @ignored_gems = [] @suppressions = Suppressions.from(nil) @github_oauth_token = nil @gitlab_token = nil @forgejo_token = nil @artifactory_token = nil @artifactory_host = nil @ecosystems_email = nil @parallelism = 10 @output_format = :auto @sarif_path = nil @baseline_path = nil @cyclonedx_path = nil @cyclonedx_version = "1.6" @critical_warning_emoji = "🚩" @futurist_emoji = "🔮" @success_emoji = "✅" @unsure_emoji = "❓" @warning_emoji = "⚠️" # Release-age thresholds (years) calibrated against real RubyGems cadence, # not the npm-derived 12-month convention: healthy mature gems routinely go # 12-18 months between releases, so the ok ceiling is 18 months. > 3 years # is critical. See #32. @no_warning_range_end = 1.5 @warning_range_end = 3 end |
Instance Attribute Details
#alternatives ⇒ Object
Returns the value of attribute alternatives.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def alternatives @alternatives end |
#artifactory_host ⇒ Object
129 130 131 |
# File 'lib/still_active/config.rb', line 129 def artifactory_host @artifactory_host ||= presence(ENV["STILL_ACTIVE_ARTIFACTORY_HOST"]) end |
#artifactory_token ⇒ Object
125 126 127 |
# File 'lib/still_active/config.rb', line 125 def artifactory_token @artifactory_token ||= presence(ENV["STILL_ACTIVE_ARTIFACTORY_TOKEN"]) end |
#baseline_path ⇒ Object
Returns the value of attribute baseline_path.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def baseline_path @baseline_path end |
#critical_warning_emoji ⇒ Object
Returns the value of attribute critical_warning_emoji.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def critical_warning_emoji @critical_warning_emoji end |
#cyclonedx_path ⇒ Object
Returns the value of attribute cyclonedx_path.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def cyclonedx_path @cyclonedx_path end |
#cyclonedx_version ⇒ Object
Returns the value of attribute cyclonedx_version.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def cyclonedx_version @cyclonedx_version end |
#direct_only ⇒ Object
Returns the value of attribute direct_only.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def direct_only @direct_only end |
#ecosystems_email ⇒ Object
Codeberg/Forgejo has no ubiquitous CLI to borrow a token from (unlike gh/glab), so it's env-var only. Anonymous works for public repos; a token only raises the rate limit. CODEBERG_TOKEN is accepted as a convenience alias for the codeberg.org default host. Optional contact email for ecosyste.ms's "polite pool" (sent as a mailto query param), which raises the anonymous rate limit and lets them reach out. Nil by default -- anonymous is plenty for a typical lockfile.
117 118 119 |
# File 'lib/still_active/config.rb', line 117 def ecosystems_email @ecosystems_email ||= presence(ENV["STILL_ACTIVE_ECOSYSTEMS_EMAIL"]&.strip) end |
#fail_if_critical ⇒ Object
Returns the value of attribute fail_if_critical.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def fail_if_critical @fail_if_critical end |
#fail_if_deprecated ⇒ Object
Returns the value of attribute fail_if_deprecated.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def fail_if_deprecated @fail_if_deprecated end |
#fail_if_language_ceiling ⇒ Object
Returns the value of attribute fail_if_language_ceiling.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def fail_if_language_ceiling @fail_if_language_ceiling end |
#fail_if_outdated ⇒ Object
Returns the value of attribute fail_if_outdated.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def fail_if_outdated @fail_if_outdated end |
#fail_if_poison ⇒ Object
Returns the value of attribute fail_if_poison.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def fail_if_poison @fail_if_poison end |
#fail_if_vulnerable ⇒ Object
Returns the value of attribute fail_if_vulnerable.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def fail_if_vulnerable @fail_if_vulnerable end |
#fail_if_warning ⇒ Object
Returns the value of attribute fail_if_warning.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def fail_if_warning @fail_if_warning end |
#forgejo_token ⇒ Object
121 122 123 |
# File 'lib/still_active/config.rb', line 121 def forgejo_token @forgejo_token ||= presence(ENV["STILL_ACTIVE_FORGEJO_TOKEN"]) || presence(ENV["CODEBERG_TOKEN"]) end |
#futurist_emoji ⇒ Object
Returns the value of attribute futurist_emoji.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def futurist_emoji @futurist_emoji end |
#gemfile_path ⇒ Object
Lazy so that running with --gems=... (no Gemfile needed) doesn't crash when invoked from a directory without a Gemfile in the tree.
135 136 137 138 139 140 141 |
# File 'lib/still_active/config.rb', line 135 def gemfile_path @gemfile_path ||= begin Bundler.default_gemfile.to_s rescue Bundler::GemfileNotFound File.join(Dir.pwd, "Gemfile") end end |
#gems ⇒ Object
Returns the value of attribute gems.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def gems @gems end |
#github_oauth_token ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/still_active/config.rb', line 88 def github_oauth_token # Cache the resolution including a nil result: the token can't change # mid-run, and provider selection now reads this per gem, so a plain ||= # (which doesn't memoize nil) would re-shell `gh auth token` for every gem # in a no-token run. return @github_oauth_token if @github_oauth_token_resolved # Assign before flipping the flag: gh_cli_token shells out and yields the # async reactor, so a concurrent fiber must never see resolved=true while # the value is still nil (it would wrongly route a tokened gem to the # ecosyste.ms fallback). Worst case under contention is a few extra `gh` # calls, never a premature nil; Workflow.call also resolves this once before # the fan-out so the contended path isn't normally hit. @github_oauth_token ||= presence(ENV["GITHUB_TOKEN"]) || presence(ENV["GH_TOKEN"]) || gh_cli_token @github_oauth_token_resolved = true @github_oauth_token end |
#gitlab_token ⇒ Object
106 107 108 |
# File 'lib/still_active/config.rb', line 106 def gitlab_token @gitlab_token ||= presence(ENV["GITLAB_TOKEN"]) || glab_cli_token end |
#ignored_gems ⇒ Object
Returns the value of attribute ignored_gems.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def ignored_gems @ignored_gems end |
#no_warning_range_end ⇒ Object
Returns the value of attribute no_warning_range_end.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def no_warning_range_end @no_warning_range_end end |
#output_format ⇒ Object
Returns the value of attribute output_format.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def output_format @output_format end |
#parallelism ⇒ Object
Returns the value of attribute parallelism.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def parallelism @parallelism end |
#sarif_path ⇒ Object
Returns the value of attribute sarif_path.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def sarif_path @sarif_path end |
#sbom_path ⇒ Object
Returns the value of attribute sbom_path.
11 12 13 |
# File 'lib/still_active/config.rb', line 11 def sbom_path @sbom_path end |
#success_emoji ⇒ Object
Returns the value of attribute success_emoji.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def success_emoji @success_emoji end |
#suppressions ⇒ Object
Returns the value of attribute suppressions.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def suppressions @suppressions end |
#unreleased_commits ⇒ Object
Returns the value of attribute unreleased_commits.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def unreleased_commits @unreleased_commits end |
#unsure_emoji ⇒ Object
Returns the value of attribute unsure_emoji.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def unsure_emoji @unsure_emoji end |
#warning_emoji ⇒ Object
Returns the value of attribute warning_emoji.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def warning_emoji @warning_emoji end |
#warning_range_end ⇒ Object
Returns the value of attribute warning_range_end.
12 13 14 |
# File 'lib/still_active/config.rb', line 12 def warning_range_end @warning_range_end end |
Instance Method Details
#github_client ⇒ Object
83 84 85 86 |
# File 'lib/still_active/config.rb', line 83 def github_client @github_client ||= Octokit::Client.new(access_token: github_oauth_token) end |