kettle-soup-cover 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b79eab6c78028cb61a9cdf3a9fcc99750a8a77934f258e068f34471cbb16ff33
4
- data.tar.gz: 598f21459d351d9fecdbae69418dbc3869e4ab56d82446b5724df06e8ba462b4
3
+ metadata.gz: a07c0152dda8bd9cce9d4bdd7f76c89f1f50579909017ae7521cad3dfcc8cbad
4
+ data.tar.gz: 0f6590e962b33dbeac87c0a4895496073bbbd4ad7a8a155e2bd4f68ee32fa0d7
5
5
  SHA512:
6
- metadata.gz: e8e7dbcd76f206db85cf918f0d7dce2ee4523ad97e6eb53c1044e6a085c1f2c287dbd04079c5f421dd238e282daaa4e476467357dd0e97c252bbc5653f92482b
7
- data.tar.gz: 953a7e8b3e684bb86163dd5fce7c7a00e79fe50fe2cf991be6d2a94e6dd93f3353019459b985108adf131fe40e209248c3699c1f3d1a49c9503af915076cf316
6
+ metadata.gz: a608f3345c2af94017e7825775f9f4b3f9a1bbc11ba477bf170be293998cd73240bf44bf14cb426e1e70051a7f56d6044ce5a9ef608b26b682c6f2ad627ae451
7
+ data.tar.gz: fc3eaab0ada73e9cbd6773e14a037ce0393e81bb76659d175ed4d1a7cb87e14bc423da4e4d910a001da06666bfc5156600c469ab8bcbc4a643f34dcaa505c8bf
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -11,6 +11,44 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
  ### Fixed
12
12
  ### Removed
13
13
 
14
+ ## [1.0.7] - 2025-05-20
15
+ ### Added
16
+ - Document usage with minitest
17
+ - Document usage with https://github.com/irongut/CodeCoverageSummary
18
+ - Document usage with https://github.com/marocchino/sticky-pull-request-comment
19
+ - More documentation improvements
20
+ - Link to Discord
21
+ ### Changed
22
+ - Gem build: Don't check for cert if SKIP_GEM_SIGNING is set
23
+ - Allows linux packaging systems to build gem without signing via rubygems
24
+ - Update homepage in gemspec
25
+ - Improved loading of version.rb in gemspec
26
+
27
+ ## [1.0.6] - 2025-05-04
28
+ - COVERAGE: 93.43% -- 128/137 lines in 10 files
29
+ - BRANCH COVERAGE: 50.00% -- 16/32 branches in 10 files
30
+ - 11.11% documented
31
+ ### Added
32
+ - Support for linux, and other OSes, in `coverage` rake task
33
+ - previously was macOS only (would raise error on other OSes)
34
+ - ✨ `Kettle::Soup::Cover::OPEN_BIN`
35
+ - Set `export K_SOUP_COV_OPEN_BIN=open` to use macOS' `open` command in `coverage` task
36
+ - Set `export K_SOUP_COV_OPEN_BIN=xdg-open` to use Linux' `xdg-open` command in `coverage` task
37
+ - Set `export K_SOUP_COV_OPEN_BIN=` to just print the path to the HTML coverage report in `coverage` task
38
+ - Test coverage increased from 55 => 93 for lines
39
+ - Test coverage increased from 25 => 50 for branches
40
+ ### Changed
41
+ - Refactored internals in ways that should not affect public APIs
42
+ - allows much greater test coverage
43
+ - report a bug if anything breaks!
44
+ - Going forward all releases will be signed by my key that expires 2045-04-29
45
+ ### Fixed
46
+ - require hooks such that both work equally well:
47
+ - `require "kettle/soup/cover"`
48
+ - `require "kettle-soup-cover"`
49
+ - Allow unsigned gem builds (for linux distros)
50
+ - In the ENV set `SKIP_GEM_SIGNING` to any value
51
+
14
52
  ## [1.0.5] - 2025-04-03
15
53
  ### Added
16
54
  - Documentation
@@ -80,7 +118,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
80
118
  ## [0.1.0] - 2023-10-17
81
119
  - Initial release
82
120
 
83
- [Unreleased]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.4...HEAD
121
+ [Unreleased]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.7...HEAD
122
+ [1.0.7]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.6...v1.0.7
123
+ [1.0.6]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.5...v1.0.6
124
+ [1.0.5]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.4...v1.0.5
84
125
  [1.0.4]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.3...v1.0.4
85
126
  [1.0.3]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.2...v1.0.3
86
127
  [1.0.2]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.1...v1.0.2
data/CONTRIBUTING.md CHANGED
@@ -67,11 +67,14 @@ Also see GitLab Contributors: [https://gitlab.com/kettle-rb/kettle-soup-cover/-/
67
67
 
68
68
  ### One-time, Per-maintainer, Setup
69
69
 
70
- **IMPORTANT**: Your public key for signing gems will need to be picked up by the line in the
71
- `gemspec` defining the `spec.cert_chain` (check the relevant ENV variables there),
72
- in order to sign the new release.
70
+ **IMPORTANT**: If you want to sign the build you create,
71
+ your public key for signing gems will need to be picked up by the line in the
72
+ `gemspec` defining the `spec.cert_chain` (check the relevant ENV variables there).
73
+ All releases to RubyGems.org will be signed.
73
74
  See: [RubyGems Security Guide][🔒️rubygems-security-guide]
74
75
 
76
+ NOTE: To build without signing the gem you must set `SKIP_GEM_SIGNING` to some value in your environment.
77
+
75
78
  ### To release a new version:
76
79
 
77
80
  1. Run `bin/setup && bin/rake` as a tests, coverage, & linting sanity check
@@ -87,10 +90,11 @@ See: [RubyGems Security Guide][🔒️rubygems-security-guide]
87
90
  - Run `export SOURCE_DATE_EPOCH=$EPOCHSECONDS && echo $SOURCE_DATE_EPOCH`
88
91
  - If the echo above has no output, then it didn't work.
89
92
  - Note that you'll need the `zsh/datetime` module, if running `zsh`.
90
- - In `bash` you can use `date +%s` instead, i.e. `export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH`
93
+ - In older versions of `bash` you can use `date +%s` instead, i.e. `export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH`
91
94
  10. Run `bundle exec rake build`
92
- 11. Run `bin/gem_checksums` (more context [1][🔒️rubygems-checksums-pr] and [2][🔒️rubygems-guides-pr])
93
- to create SHA-256 and SHA-512 checksums
95
+ 11. Run `bin/gem_checksums` (more context [1][🔒️rubygems-checksums-pr], [2][🔒️rubygems-guides-pr])
96
+ to create SHA-256 and SHA-512 checksums. This functionality is provided by the `stone_checksums`
97
+ [gem][💎stone_checksums].
94
98
  - Checksums will be committed automatically by the script, but not pushed
95
99
  12. Run `bundle exec rake release` which will create a git tag for the version,
96
100
  push git commits and tags, and push the `.gem` file to [rubygems.org][💎rubygems]
@@ -106,5 +110,6 @@ See: [RubyGems Security Guide][🔒️rubygems-security-guide]
106
110
  [🔒️rubygems-security-guide]: https://guides.rubygems.org/security/#building-gems
107
111
  [🔒️rubygems-checksums-pr]: https://github.com/rubygems/rubygems/pull/6022
108
112
  [🔒️rubygems-guides-pr]: https://github.com/rubygems/guides/pull/325
113
+ [💎stone_checksums]: https://github.com/pboling/stone_checksums
109
114
  [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
110
115
  [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2023 - 2025 Peter Boling (railsbling.com)
3
+ Copyright (c) 2023 - 2025 Peter H. Boling (railsbling.com)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  </a>
5
5
  </p>
6
6
 
7
- # Kettle::Soup::Cover
7
+ # 🥘 Kettle::Soup::Cover
8
8
 
9
9
  [![Version][👽versioni]][👽version]
10
10
  [![License: MIT][📄license-img]][📄license-ref]
@@ -13,8 +13,8 @@
13
13
  [![Depfu][🔑depfui♻️]][🔑depfu]
14
14
  [![CodeCov Test Coverage][🔑codecovi♻️]][🔑codecov]
15
15
  [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
16
- [![CodeClimate Test Coverage][🔑cc-covi♻️]][🔑cc-cov]
17
- [![Maintainability][🔑cc-mnti♻️]][🔑cc-mnt]
16
+ [![QLTY Test Coverage][🔑qlty-covi♻️]][🔑qlty-cov]
17
+ [![QLTY Maintainability][🔑qlty-mnti♻️]][🔑qlty-mnt]
18
18
  [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf]
19
19
  [![CI Current][🚎11-c-wfi]][🚎11-c-wf]
20
20
  [![CI Supported][🚎6-s-wfi]][🚎6-s-wf]
@@ -22,28 +22,44 @@
22
22
  [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf]
23
23
  [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf]
24
24
  [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
25
+ [![CodeQL][🖐codeQL-img]][🖐codeQL]
25
26
 
26
27
  ---
27
28
 
28
- [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay]
29
+ [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay]
29
30
  [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor]
30
31
  [![Buy me a coffee][🖇buyme-small-img]][🖇buyme]
31
- [![Polar Shield][🖇polar-img]][🖇polar]
32
+ [![Donate on Polar][🖇polar-img]][🖇polar]
32
33
  [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
33
34
  [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
34
35
 
35
- A Covered Kettle of SOUP (Software of Unknown Provenance)
36
+ Four lines of code to get a configured, curated, opinionated, set of dependencies for Test Coverage, and that's *including* the two lines for `require "simplecov"`, and `SimpleCov.start`.
36
37
 
37
- The name is derived in part from the medical devices field,
38
- where this library is considered a package of [SOUP](https://en.wikipedia.org/wiki/Software_of_unknown_pedigree).
38
+ Configured for what? To work out of the box on every CI*. Batteries included.
39
+ For apps and libraries. Any test framework. Many code coverage related GitHub Actions (example configs [1](#marocchinosticky-pull-request-comment), [2](#irongutcodecoveragesummary)).
40
+
41
+ | Test Framework | Helper | Config |
42
+ |----------------|-----------------------------|-------------------------------|
43
+ | MiniTest | [test helper][mini-helper] | [.simplecov][mini-simplecov] |
44
+ | RSpec | [spec helper][rpsec-helper] | [.simplecov][rspec-simplecov] |
45
+
46
+ [mini-helper]: https://github.com/pboling/silent_stream/blob/master/tests/test_silent_stream.rb
47
+ [mini-simplecov]: https://github.com/pboling/silent_stream/blob/master/.simplecov
48
+ [rpsec-helper]: https://github.com/oauth-xx/oauth2/blob/main/spec/spec_helper.rb
49
+ [rspec-simplecov]: https://github.com/oauth-xx/oauth2/blob/main/.simplecov
39
50
 
40
- Just add four lines of code to get a configured, curated, opinionated, set of dependencies for Test Coverage.
51
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
52
+ |--------------------------------------------------------|-------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
53
+ | 🧪 [kettle-rb/kettle-soup-cover on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜wiki] | 🏀 Tiny Matrix | ➖ |
54
+ | 🧊 [kettle-rb/kettle-soup-cover on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | ➖ | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
55
+ | 🐙 [kettle-rb/kettle-soup-cover on GitHub][📜src-gh] | A Dirty Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | ➖ |
56
+ | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
41
57
 
42
58
  One of the major benefits of using this library is not having to figure
43
59
  out how to get multiple coverage output formats working. I did that for you,
44
60
  and I got all of them working, at the same time together, or al la carte. Kum-ba-ya.
45
61
 
46
- A quick shot of raw coverage power, straight to your brain:
62
+ A quick shot of 12-factor coverage power, straight to your brain:
47
63
 
48
64
  ```shell
49
65
  export K_SOUP_COV_DO=true # Means you want code coverage
@@ -54,23 +70,74 @@ export K_SOUP_COV_MIN_LINE=69 # Means you want to enforce X% line coverage
54
70
  export MAX_ROWS=5 # Setting for simplecov-console gem for tty output, limits to the worst N rows of bad coverage
55
71
  ```
56
72
 
57
- I hope I've piqued your interest.
73
+ I hope I've piqued your interest enough to give it a ⭐️ if the forge you are on supports it.
74
+
75
+ <details>
76
+ <summary>What does the name mean?</summary>
77
+
78
+ A Covered Kettle of SOUP (Software of Unknown Provenance)
79
+
80
+ The name is derived in part from the medical devices field,
81
+ where this library is considered a package of [SOUP](https://en.wikipedia.org/wiki/Software_of_unknown_pedigree).
82
+
83
+ </details>
84
+
85
+ ## Format / Library x CI Matrix
86
+
87
+ This tool leverages other tools to make hard things easier, but sometimes those other tools break...
88
+ I'll try to track that here.
89
+
90
+ | Format | Library | Status | Web | Circle<br/>CI | Git<br/>Lab | Travis<br/>CI | Jenkins<br/>X | Jenkins | Hudson | Semaphore | Bit<br/>Bucket | Team<br/>City | 🤓<br/>Nerds |
91
+ |--------|----------------------------|-----------------------------------------------|-----|---------------|-------------|---------------|---------------|---------|--------|-----------|----------------|---------------|--------------|
92
+ | `html` | `simplecov-html` | ✅ | ✅ | | | | | | | | | | ✅ |
93
+ | `xml` | `simplecov-cobertura` | ⚠️ [works (with warnings); upvote #30!][sc30] | | | ✅ | | | ✅ | | | | | ✅ |
94
+ | `rcov` | `simplecov-rcov` | ✅ | | | | | | | ✅ | | | | ✅ |
95
+ | `lcov` | `simplecov-lcov` | ✅ | | ✅ | | ✅ | ✅ | | | ✅ | | ✅ | ✅ |
96
+ | `json` | `simplecov_json_formatter` | ✅ | | ✅ | | ✅ | ✅ | | | | ✅ | | ✅ |
97
+ | `tty` | `simplecov-console` | ✅ | | | | | | | | | | | ✅ |
98
+
99
+ If you find this working/not working different than above please open an issue / PR!
100
+
101
+ ## ☝️ Not actually *every CI*
58
102
 
59
- ## Info you can shake a stick at
103
+ This gem does not add coverage parsing to CI's that don't have it, since that's impossible.
104
+ Vendor-specific formats which are not shared by other vendors are also not supported (e.g. BuildKite).
60
105
 
61
- | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
62
- |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
63
- | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
64
- | Works with MRI Ruby 2 | [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
65
- | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
66
- | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![HEAD on RubyDoc.info][📜docs-head-rd-img]][🚎yard-head] [![BDFL Blog][🚂bdfl-blog-img]][🚂bdfl-blog] [![Wiki][📜wiki-img]][📜wiki] |
67
- | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] |
68
- | Expert 1:1 Support | [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] `or` [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
69
- | Enterprise Support | [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]<br/>💡Subscribe for support guarantees covering _all_ FLOSS dependencies!<br/>💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]!<br/>💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers! |
70
- | Comrade BDFL 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact BDFL][🚂bdfl-contact-img]][🚂bdfl-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
71
- | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] |
106
+ You'll have to configure them manually if you use them:
72
107
 
73
- ## Installation
108
+ * BuildKite's custom [simplecov extension][buildkite-ext]
109
+ * GitHub Actions doesn't parse test output, but...
110
+ * I configure my `coverage` workflow ([see example][example-cov-wf]) to upload coverage reports to SaaS services like:
111
+ * [codecov.io][🔑codecov] (needs token for upload)
112
+ * [QLTY.sh][🔑cc-cov] (needs token for upload)
113
+ * [coveralls.io][🔑coveralls]
114
+ * This gem helps me configure my `coverage` workflow to use Github Actions designed to report coverage like:
115
+ * Repo: [irongut/CodeCoverageSummary][GHA-ccs-repo]
116
+ * Repo: [marocchino/sticky-pull-request-comment][GHA-sprc-repo]
117
+
118
+
119
+ [buildkite-ext]: https://github.com/buildkite/simplecov-buildkite
120
+ [example-cov-wf]: https://github.com/kettle-rb/kettle-soup-cover/blob/main/.github/workflows/coverage.yml
121
+ [sc30]: https://github.com/dashingrocket/simplecov-cobertura/issues/30
122
+
123
+ This library is based on ideas I originally introduced in the gem _[rspec-stubbed_env](https://github.com/pboling/rspec-stubbed_env)_.
124
+
125
+ ## 💡 Info you can shake a stick at
126
+
127
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
128
+ |-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
129
+ | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
130
+ | Works with MRI Ruby 2 | [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
131
+ | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
132
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![HEAD on RubyDoc.info][📜docs-head-rd-img]][🚎yard-head] [![BDFL Blog][🚂bdfl-blog-img]][🚂bdfl-blog] [![Wiki][📜wiki-img]][📜wiki] |
133
+ | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
134
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] |
135
+ | Support | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
136
+ | Enterprise Support | [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]<br/>💡Subscribe for support guarantees covering _all_ FLOSS dependencies!<br/>💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]!<br/>💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers! |
137
+ | Comrade BDFL 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact BDFL][🚂bdfl-contact-img]][🚂bdfl-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
138
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
139
+
140
+ ## ✨ Installation
74
141
 
75
142
  Install the gem and add to the application's Gemfile by executing:
76
143
 
@@ -80,24 +147,80 @@ If bundler is not being used to manage dependencies, install the gem by executin
80
147
 
81
148
  $ gem install kettle-soup-cover
82
149
 
83
- ## Usage
150
+ ### 🔒 Secure Installation
151
+
152
+ `kettle-soup-cover` is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
153
+ [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
154
+ by following the instructions below.
155
+
156
+ Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
157
+
158
+ ```shell
159
+ gem cert --add <(curl -Ls https://raw.github.com/kettle-rb/kettle-soup-cover/main/certs/pboling.pem)
160
+ ```
161
+
162
+ You only need to do that once. Then proceed to install with:
163
+
164
+ ```shell
165
+ gem install kettle-soup-cover -P MediumSecurity
166
+ ```
167
+
168
+ The `MediumSecurity` trust profile will verify signed gems, but allow the installation of unsigned dependencies.
84
169
 
85
- In your `spec/spec_helper.rb`, just prior to loading the library under test:
170
+ This is necessary because not all of `kettle-soup-cover`’s dependencies are signed, so we cannot use `HighSecurity`.
171
+
172
+ If you want to up your security game full-time:
173
+
174
+ ```shell
175
+ bundle config set --global trust-policy MediumSecurity
176
+ ```
177
+
178
+ NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
179
+
180
+ ## 🔧 Basic Usage
181
+
182
+ ### RSpec or MiniTest
183
+
184
+ In your `spec/spec_helper.rb` or `tests/test_helper.rb`, just before loading the library under test,
185
+ add two lines of code:
186
+
187
+ ### With Ruby 2.7+
86
188
 
87
189
  ```ruby
88
- # This does not require "simplecov",
89
- # because that has a side-effect of running `.simplecov`
90
190
  require "kettle-soup-cover"
191
+ require "simplecov" if Kettle::Soup::Cover::DO_COV # `.simplecov` is run here!
192
+ # IMPORTANT: If you are using MiniTest instead of RSpec, also do this (and not in .simplecov):
193
+ # SimpleCov.external_at_exit = true
194
+ ```
195
+
196
+ ### Projects that run tests against older Ruby versions, e.g. with Appraisals
91
197
 
92
- # Later in your spec setup, do this;
93
- require "simplecov" if Kettle::Soup::Cover::DO_COV
198
+ ```ruby
199
+ # NOTE: Gemfiles for older rubies won't have kettle-soup-cover.
200
+ # The rescue LoadError handles that scenario.
201
+ begin
202
+ require "kettle-soup-cover"
203
+
204
+ if Kettle::Soup::Cover::DO_COV
205
+ require "simplecov" # `.simplecov` is run here!
206
+
207
+ # IMPORTANT: If you are using MiniTest instead of RSpec, also do this (and not in .simplecov):
208
+ # SimpleCov.external_at_exit = true
209
+ end
210
+ rescue LoadError => error
211
+ # check the error message, if you are so inclined, and re-raise if not what is expected
212
+ raise error unless error.message.include?("kettle")
213
+ end
94
214
  ```
95
215
 
96
- In your `.simplecov` file:
216
+ ### All projects
217
+
218
+ In your `.simplecov` file, add 2 lines of code:
97
219
 
98
220
  ```ruby
99
- require "kettle/soup/cover/config"
100
- SimpleCov.start # you could do this somewhere else, up to you, but you do have to do it
221
+ require "kettle/soup/cover/config" # 12-factor, ENV-based configuration, with good defaults!
222
+ # you could do this somewhere else, up to you, but you do have to do it somewhere
223
+ SimpleCov.start
101
224
  ```
102
225
 
103
226
  See [Advanced Usage](#advanced-usage) below for more info,
@@ -113,10 +236,10 @@ That's it!
113
236
  ### Rakefile
114
237
 
115
238
  You'll need to have your `test` task defined.
116
- If you use `spec` instead, you can alias `test` to `spec` as follows:
239
+ If you use `spec` instead, you can make it a pre-requisite of the `test` task with:
117
240
 
118
241
  ```ruby
119
- desc "alias test task to spec"
242
+ desc "run spec task with test task"
120
243
  task test: :spec
121
244
  ```
122
245
 
@@ -162,6 +285,7 @@ K_SOUP_COV_MIN_HARD
162
285
  K_SOUP_COV_MIN_LINE
163
286
  K_SOUP_COV_MULTI_FORMATTERS
164
287
  K_SOUP_COV_PREFIX
288
+ K_SOUP_COV_OPEN_BIN
165
289
  K_SOUP_COV_USE_MERGING
166
290
  K_SOUP_COV_VERBOSE
167
291
  ```
@@ -172,6 +296,57 @@ have their own complete suite of ENV variables you can configure.
172
296
  [env-constants]: /lib/kettle/soup/cover.rb
173
297
  [simplecov-console]: https://github.com/chetan/simplecov-console#options
174
298
 
299
+ #### Compatible with GitHub Actions for Code Coverage feedback in pull requests
300
+
301
+ If you don't want to configure a SaaS service to update your pull requests with
302
+ code coverage there are alternatives.
303
+
304
+ After the step that runs your test suite use one or more of the following.
305
+
306
+ ##### irongut/CodeCoverageSummary
307
+
308
+ Repo: [irongut/CodeCoverageSummary][GHA-ccs-repo]
309
+
310
+ [GHA-ccs-repo]: https://github.com/irongut/CodeCoverageSummary
311
+
312
+ ```yaml
313
+
314
+ - name: Code Coverage Summary Report
315
+ uses: irongut/CodeCoverageSummary@v1.3.0
316
+ if: ${{ github.event_name == 'pull_request' }}
317
+ with:
318
+ filename: ./coverage/coverage.xml
319
+ badge: true
320
+ fail_below_min: true
321
+ format: markdown
322
+ hide_branch_rate: false
323
+ hide_complexity: true
324
+ indicators: true
325
+ output: both
326
+ thresholds: '100 100' # '<MIN LINE COVERAGE> <MIN BRANCH COVERAGE>'
327
+ continue-on-error: ${{ matrix.experimental != 'false' }}
328
+ ```
329
+
330
+ ##### *marocchino/sticky-pull-request-comment*
331
+
332
+ Repo: [marocchino/sticky-pull-request-comment][GHA-sprc-repo]
333
+
334
+ [GHA-sprc-repo]: https://github.com/marocchino/sticky-pull-request-comment
335
+
336
+ ```yaml
337
+ - name: Add Coverage PR Comment
338
+ uses: marocchino/sticky-pull-request-comment@v2
339
+ if: ${{ github.event_name == 'pull_request' }}
340
+ with:
341
+ recreate: true
342
+ path: code-coverage-results.md
343
+ continue-on-error: ${{ matrix.experimental != 'false' }}
344
+ ```
345
+
346
+ ### 🚀 Release Instructions
347
+
348
+ See [CONTRIBUTING.md][🤝contributing].
349
+
175
350
  ## 🔐 Security
176
351
 
177
352
  See [SECURITY.md][🔐security].
@@ -179,8 +354,7 @@ See [SECURITY.md][🔐security].
179
354
  ## 🤝 Contributing
180
355
 
181
356
  If you need some ideas of where to help, you could work on adding more code coverage,
182
- or if it is already 💯 (see [below](#code-coverage)) check TODOs (see [below](#todos)),
183
- or check [issues][🤝issues], or [PRs][🤝pulls],
357
+ or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
184
358
  or use the gem and think about how it could be better.
185
359
 
186
360
  We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
@@ -232,7 +406,7 @@ It is obvious to many, but not all, and since the spec is silent, the bike shedd
232
406
 
233
407
  > dropping support for a platform is both obviously and objectively a breaking change
234
408
 
235
- - Jordan Harband (@ljharb) [in SemVer issue 716][📌semver-breaking]
409
+ - Jordan Harband (@ljharb, maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
236
410
 
237
411
  To get a better understanding of how SemVer is intended to work over a project's lifetime,
238
412
  read this article from the creator of SemVer:
@@ -281,7 +455,7 @@ or one of the others at the head of this README.
281
455
  [![Buy me a latte][🖇buyme-img]][🖇buyme]
282
456
 
283
457
  [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
284
- [⛳️gem-namespace]: https://github.com/kettle-rb/kettle-soup-cover/blob/main/lib/masq.rb
458
+ [⛳️gem-namespace]: https://github.com/kettle-rb/kettle-soup-cover
285
459
  [⛳️namespace-img]: https://img.shields.io/badge/namespace-Kettle%3A%3ASoup%3A%3ACover-brightgreen.svg?style=flat&logo=ruby&logoColor=white
286
460
  [⛳️gem-name]: https://rubygems.org/gems/kettle-soup-cover
287
461
  [⛳️name-img]: https://img.shields.io/badge/name-kettle--soup--cover-brightgreen.svg?style=flat&logo=rubygems&logoColor=red
@@ -297,14 +471,18 @@ or one of the others at the head of this README.
297
471
  [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
298
472
  [💖🐘ruby-mast]: https://ruby.social/@galtzo
299
473
  [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=flat&logo=mastodon&label=Ruby%20%40galtzo
300
- [💖🦋bluesky]: https://galtzo.bsky.social
301
- [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.bsky.social-0285FF?style=flat&logo=bluesky&logoColor=white
474
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
475
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
302
476
  [💖🌳linktree]: https://linktr.ee/galtzo
303
477
  [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
304
478
  [💖💁🏼‍♂️devto]: https://dev.to/galtzo
305
479
  [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
306
480
  [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
307
481
  [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
482
+ [💖🧊berg]: https://codeberg.org/pboling
483
+ [💖🐙hub]: https://github.org/pboling
484
+ [💖🛖hut]: https://sr.ht/~galtzo/
485
+ [💖🧪lab]: https://gitlab.com/pboling
308
486
  [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
309
487
  [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
310
488
  [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
@@ -316,6 +494,8 @@ or one of the others at the head of this README.
316
494
  [🚂railsbling]: http://www.railsbling.com
317
495
  [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
318
496
  [📜src-gl]: https://gitlab.com/kettle-rb/kettle-soup-cover/
497
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
498
+ [📜src-cb]: https://codeberg.org/kettle-rb/kettle-soup-cover
319
499
  [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
320
500
  [📜src-gh]: https://github.com/kettle-rb/kettle-soup-cover
321
501
  [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
@@ -328,10 +508,10 @@ or one of the others at the head of this README.
328
508
  [👽oss-helpi]: https://www.codetriage.com/kettle-rb/kettle-soup-cover/badges/users.svg
329
509
  [👽version]: https://rubygems.org/gems/kettle-soup-cover
330
510
  [👽versioni]: https://img.shields.io/gem/v/kettle-soup-cover.svg
331
- [🔑cc-mnt]: https://qlty.sh/gh/kettle-rb/projects/kettle-soup-cover
332
- [🔑cc-mnti♻️]: https://qlty.sh/badges/75db1a51-b8ab-423a-b396-8b518067d8c3/maintainability.svg
333
- [🔑cc-cov]: https://qlty.sh/gh/kettle-rb/projects/kettle-soup-cover
334
- [🔑cc-covi♻️]: https://qlty.sh/badges/75db1a51-b8ab-423a-b396-8b518067d8c3/test_coverage.svg
511
+ [🔑qlty-mnt]: https://qlty.sh/gh/kettle-rb/projects/kettle-soup-cover
512
+ [🔑qlty-mnti♻️]: https://qlty.sh/badges/75db1a51-b8ab-423a-b396-8b518067d8c3/maintainability.svg
513
+ [🔑qlty-cov]: https://qlty.sh/gh/kettle-rb/projects/kettle-soup-cover
514
+ [🔑qlty-covi♻️]: https://qlty.sh/badges/75db1a51-b8ab-423a-b396-8b518067d8c3/test_coverage.svg
335
515
  [🔑codecov]: https://codecov.io/gh/kettle-rb/kettle-soup-cover
336
516
  [🔑codecovi♻️]: https://codecov.io/gh/kettle-rb/kettle-soup-cover/branch/main/graph/badge.svg?token=0X5VEW9USD
337
517
  [🔑coveralls]: https://coveralls.io/github/kettle-rb/kettle-soup-cover?branch=main
@@ -358,16 +538,19 @@ or one of the others at the head of this README.
358
538
  [🚎8-ho-wfi]: https://github.com/kettle-rb/kettle-soup-cover/actions/workflows/hoary.yml/badge.svg
359
539
  [🚎11-c-wf]: https://github.com/kettle-rb/kettle-soup-cover/actions/workflows/current.yml
360
540
  [🚎11-c-wfi]: https://github.com/kettle-rb/kettle-soup-cover/actions/workflows/current.yml/badge.svg
361
- [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
541
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay
362
542
  [⛳liberapay]: https://liberapay.com/pboling/donate
363
543
  [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
364
544
  [🖇sponsor]: https://github.com/sponsors/pboling
365
- [🖇polar-img]: https://polar.sh/embed/seeks-funding-shield.svg?org=pboling
545
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-yellow.svg
366
546
  [🖇polar]: https://polar.sh/pboling
367
- [🖇kofi-img]: https://img.shields.io/badge/buy_me_coffee-donate-yellow.svg
547
+ [🖇kofi-img]: https://img.shields.io/badge/a_more_different_coffee-✓-yellow.svg
368
548
  [🖇kofi]: https://ko-fi.com/O5O86SNP4
369
549
  [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-yellow.svg
370
550
  [🖇patreon]: https://patreon.com/galtzo
551
+ [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
552
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
553
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-yellow.svg?style=flat
371
554
  [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
372
555
  [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
373
556
  [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
@@ -375,8 +558,13 @@ or one of the others at the head of this README.
375
558
  [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
376
559
  [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
377
560
  [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
378
- [🤝issues]: https://github.com/kettle-rb/kettle-soup-cover/issues
379
- [🤝pulls]: https://github.com/kettle-rb/kettle-soup-cover/pulls
561
+ [🤝gh-issues]: https://github.com/kettle-rb/kettle-soup-cover/issues
562
+ [🤝gh-pulls]: https://github.com/kettle-rb/kettle-soup-cover/pulls
563
+ [🤝gl-issues]: https://gitlab.com/oauth-xx/oauth2/-/issues
564
+ [🤝gl-pulls]: https://gitlab.com/oauth-xx/oauth2/-/merge_requests
565
+ [🤝cb-issues]: https://codeberg.org/oauth-xx/oauth2/issues
566
+ [🤝cb-pulls]: https://codeberg.org/oauth-xx/oauth2/pulls
567
+ [🤝cb-donate]: https://donate.codeberg.org/
380
568
  [🤝contributing]: CONTRIBUTING.md
381
569
  [🔑codecov-g♻️]: https://codecov.io/gh/kettle-rb/kettle-soup-cover/graphs/tree.svg?token=0X5VEW9USD
382
570
  [🖐contrib-rocks]: https://contrib.rocks
@@ -384,27 +572,33 @@ or one of the others at the head of this README.
384
572
  [🖐contributors-img]: https://contrib.rocks/image?repo=kettle-rb/kettle-soup-cover
385
573
  [🚎contributors-gl]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/graphs/main
386
574
  [🪇conduct]: CODE_OF_CONDUCT.md
387
- [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-4baaaa.svg
575
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
388
576
  [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
389
577
  [📌semver]: https://semver.org/spec/v2.0.0.html
390
- [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
578
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
391
579
  [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
392
580
  [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
393
581
  [📌changelog]: CHANGELOG.md
394
582
  [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
395
- [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
583
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
584
+ [📌gitmoji]:https://gitmoji.dev
585
+ [📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square
396
586
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
397
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.075-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
587
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.137-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
398
588
  [🔐security]: SECURITY.md
399
- [🔐security-img]: https://img.shields.io/badge/security-policy-brightgreen.svg?style=flat
589
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
400
590
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
401
591
  [📄license]: LICENSE.txt
402
592
  [📄license-ref]: https://opensource.org/licenses/MIT
403
- [📄license-img]: https://img.shields.io/badge/License-MIT-green.svg
593
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
404
594
  [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
405
- [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-brightgreen.svg?style=flat
595
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
406
596
  [🚎yard-current]: http://rubydoc.info/gems/kettle-soup-cover
407
597
  [🚎yard-head]: https://rubydoc.info/github/kettle-rb/kettle-soup-cover/main
408
- [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
409
- [🖇buyme]: https://www.buymeacoffee.com/pboling
410
- [🖇buyme-small-img]: https://img.shields.io/badge/Buy--Me--A--Coffee-✓-brightgreen.svg?style=flat
598
+ [💎stone_checksums]: https://github.com/pboling/stone_checksums
599
+ [💎SHA_checksums]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/tree/main/checksums
600
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
601
+ [💎rlts-img]: https://img.shields.io/badge/code_style_%26_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
602
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
603
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
604
+ [✉️discord-invite-img]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge