stone_checksums 1.0.0 → 1.0.1

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.
data/README.md CHANGED
@@ -1,205 +1,234 @@
1
- # StoneChecksums née GemChecksums
2
-
3
- [![Version][👽versioni]][👽version]
4
- [![License: MIT][📄license-img]][📄license-ref]
5
- [![Downloads Rank][👽dl-ranki]][👽dl-rank]
6
- [![Open Source Helpers][👽oss-helpi]][👽oss-help]
7
- [![Depfu][🔑depfui♻️]][🔑depfu]
8
- [![CodeCov Test Coverage][🔑codecovi♻️]][🔑codecov]
9
- [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
10
- [![CodeClimate Test Coverage][🔑cc-covi♻️]][🔑cc-cov]
11
- [![Maintainability][🔑cc-mnti♻️]][🔑cc-mnt]
12
- [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf]
13
- [![CI Current][🚎11-c-wfi]][🚎11-c-wf]
14
- [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf]
15
- [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf]
16
- [![CI Supported][🚎6-s-wfi]][🚎6-s-wf]
17
- [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf]
18
- [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf]
19
- [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf]
20
- [![CI Hoary][🚎8-ho-wfi]][🚎8-ho-wf]
21
- [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf]
22
- [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
1
+ [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![stone_checksums Logo by Aboling0, CC BY-SA 4.0][🖼️stone_checksums-i]][🖼️stone_checksums]
2
+
3
+ [🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
4
+ [🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
5
+ [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
6
+ [🖼️ruby-lang]: https://www.ruby-lang.org/
7
+ [🖼️stone_checksums-i]: https://logos.galtzo.com/assets/images/galtzo-floss/stone_checksums/avatar-192px.svg
8
+ [🖼️stone_checksums]: https://github.com/galtzo-floss/stone_checksums
9
+
10
+ # 🍲 StoneChecksums - Generate SHA-256 and SHA-512 checksums of a RubyGem
11
+
12
+ [![Version][👽versioni]][👽version] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🔑codecovi]][🔑codecov] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] [![QLTY Maintainability][🔑qlty-mnti]][🔑qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
13
+
14
+ If ☝️ `ci_badges.map(&:color).detect { it != "green"}` [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
23
15
 
24
16
  ---
25
17
 
26
- [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay]
27
- [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor]
28
- [![Buy me a coffee][🖇buyme-small-img]][🖇buyme]
29
- [![Polar Shield][🖇polar-img]][🖇polar]
30
- [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
31
- [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
18
+ OTOH, if `ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS is now my full-time job.
19
+
20
+ [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
32
21
 
33
- A ruby shell script, and rake task, to generate SHA-256 and SHA-512 checksums of RubyGem libraries,
34
- shipped as a RubyGem.
22
+ ## 🌻 Synopsis
35
23
 
36
- You may be familiar with the standard rake task `build:checksum` from RubyGems.
37
- This gem ships an improved version as `build:generate_checksums`, based on the
38
- [RubyGems pull request][🔒️rubygems-checksums-pr] I started in October 2022.
24
+ Generate SHA-256 and SHA-512 checksums of a rubygem library,
25
+ and commit them to your repository.
26
+ The SHA-256 will match the shown for each gem published to RubyGems.org.
39
27
 
40
- ```shell
41
- rake build:generate_checksums
28
+ ```console
29
+ # as a rake task:
30
+ bundle exec rake build:generate_checksums
31
+ # as a binstub:
32
+ bin/generate_checksums
42
33
  ```
43
34
 
44
- Or giving the same result...
45
35
 
46
- The script accomplishes the same thing if you prefer that:
47
- ```shell
48
- gem_checksums
49
- ```
36
+ ## 💡 Info you can shake a stick at
50
37
 
51
- ## Info you can shake a stick at
38
+ ### Federated DVCS
52
39
 
53
- | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
54
- |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
55
- | Works with JRuby | [![JRuby 9.1 Compat][💎jruby-9.1i]][🚎10-j-wf] [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎10-j-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎10-j-wf] [![JRuby 9.4 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
56
- | Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎9-t-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎9-t-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] [![Truffle Ruby HEAD Compat][💎truby-headi]][🚎3-hd-wf] |
57
- | 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] |
58
- | Works with MRI Ruby 2 | [![Ruby 2.2 Compat][💎ruby-2.2i]][🚎8-ho-wf] [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
59
- | 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] |
60
- | 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] |
61
- | 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] |
62
- | 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] |
63
- | 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! |
64
- | 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] |
65
- | `...` 💖 | [![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] |
40
+ <details>
41
+ <summary>Find this repo on other forges (Coming soon!)</summary>
66
42
 
67
- ## Installation
43
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
44
+ |-------------------------------------------------------|-------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
45
+ | 🧪 [galtzo-floss/stone_checksums on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜wiki] | 🏀 Tiny Matrix | ➖ |
46
+ | 🧊 [galtzo-floss/stone_checksums on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
47
+ | 🐙 [galtzo-floss/stone_checksums on GitHub][📜src-gh] | A Dirty Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | [💚][gh-discussions] |
48
+ | 🎮️ [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] |
68
49
 
69
- Install the gem and add to your library's Gemfile by executing:
50
+ </details>
70
51
 
71
- ```bash
72
- bundle add stone_checksums
73
- ```
52
+ [gh-discussions]: https://github.com/galtzo-floss/stone_checksums/discussions
74
53
 
75
- Or add it as a development dependency to the gemspec:
54
+ ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/stone_checksums)](https://tidelift.com/subscription/pkg/rubygems-stone_checksums?utm_source=rubygems-stone_checksums&utm_medium=referral&utm_campaign=readme)
76
55
 
77
- ```ruby
78
- Gem::Specification.new do |spec|
79
- # ...
80
- spec.add_development_dependency("stone_checksums", "~> 1.0")
81
- end
82
- ```
56
+ <details>
57
+ <summary>Need enterprise-level guarantees?</summary>
58
+
59
+ [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
60
+
61
+ - 💡Subscribe for support guarantees covering _all_ FLOSS dependencies
62
+ - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
63
+ - 💡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
64
+
65
+ Alternatively:
66
+
67
+ - [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
68
+ - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
69
+ - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
70
+
71
+ </details>
72
+
73
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
74
+ |-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
75
+ | Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
76
+ | Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] <br/> [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎9-t-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] |
77
+ | 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] |
78
+ | Works with MRI Ruby 2 | ![Ruby 2.0 Compat][💎ruby-2.0i] ![Ruby 2.1 Compat][💎ruby-2.1i] ![Ruby 2.2 Compat][💎ruby-2.2i] <br/> [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
79
+ | Works with MRI Ruby 1 | ![Ruby 1.9 Compat][💎ruby-1.9i] |
80
+ | 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] |
81
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![Wiki][📜wiki-img]][📜wiki] |
82
+ | 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] |
83
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
84
+ | 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] |
85
+ | Maintainer 🎖️ | [![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 Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
86
+ | `...` 💖 | [![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] |
87
+
88
+ ## ✨ Installation
89
+
90
+ Install the gem and add to the application's Gemfile by executing:
91
+
92
+ $ bundle add stone_checksums
83
93
 
84
94
  If bundler is not being used to manage dependencies, install the gem by executing:
85
95
 
86
- ```bash
87
- gem install stone_checksums
96
+ $ gem install stone_checksums
97
+
98
+ ### 🔒 Secure Installation
99
+
100
+ <details>
101
+ <summary>For Medium or High Security Installations</summary>
102
+
103
+ This gem is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
104
+ [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
105
+ by following the instructions below.
106
+
107
+ Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
108
+
109
+ ```console
110
+ gem cert --add <(curl -Ls https://raw.github.com/galtzo-floss/certs/main/pboling.pem)
111
+ ```
112
+
113
+ You only need to do that once. Then proceed to install with:
114
+
115
+ ```console
116
+ gem install stone_checksums -P HighSecurity
88
117
  ```
89
118
 
90
- ## Usage
119
+ The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
91
120
 
92
- Once installed you can use the shell script without any changes to your code.
121
+ If you want to up your security game full-time:
93
122
 
94
- ```shell
95
- # prepend with `bundle exec` if gem was added to Gemfile instead of installed globally
96
- gem_checksums
123
+ ```console
124
+ bundle config set --global trust-policy MediumSecurity
97
125
  ```
98
126
 
99
- However, if you want to use the bundled rake task you'll need to add it to your Rakefile first.
127
+ `MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
100
128
 
101
- ```ruby
102
- begin
103
- require "stone_checksums"
104
- GemChecksums.install_tasks
105
- rescue LoadError
106
- task("build:generate_checksums") do
107
- warn("stone_checksums gem is not available")
108
- end
109
- end
129
+ NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
130
+
131
+ </details>
132
+
133
+ ## ⚙️ Configuration
134
+
135
+ Configuration env vars:
136
+ - GEM_CHECKSUMS_CHECKSUMS_DIR: Where to write checksum files (default: checksums)
137
+ - GEM_CHECKSUMS_PACKAGE_DIR: Where to look for built gems (default: pkg)
138
+ - GEM_CHECKSUMS_GIT_DRY_RUN: When true, run a dry-run commit and clean up temporary files
139
+ - GEM_CHECKSUMS_ASSUME_YES: When true and Bundler < 2.7.0, proceed without interactive prompt (still requires SOURCE_DATE_EPOCH)
140
+
141
+ ## 🔧 Basic Usage
142
+
143
+ ### Generate Gem Checksums (SHA-256 and SHA-512)
144
+
145
+ This library helps you generate checksums for your built gem and commit them.
146
+
147
+ - Bundler >= 2.7.0: No SOURCE_DATE_EPOCH needed. Bundler now uses a constant timestamp internally, making builds reproducible by default.
148
+ - Bundler < 2.7.0: You must set SOURCE_DATE_EPOCH before building the gem to get deterministic checksums, or upgrade Bundler.
149
+ - If you still want to proceed on old Bundler non-interactively, set GEM_CHECKSUMS_ASSUME_YES=true (SOURCE_DATE_EPOCH is still required).
150
+
151
+ Usage via Rake (recommended):
152
+
153
+ ```console
154
+ bundle exec rake build
155
+ bundle exec rake build:generate_checksums
110
156
  ```
111
157
 
112
- Then you can do:
158
+ Usage via CLI (equivalent):
113
159
 
114
- ```shell
115
- # prepend with `bundle exec` if gem was added to Gemfile instead of installed globally
116
- rake build:generate_checksums
160
+ ```console
161
+ bin/gem_checksums [pkg/your_gem-1.2.3.gem]
117
162
  ```
118
163
 
119
- It is different from, and improves on, the standard rake task in that it:
120
- - does various checks to ensure the generated checksums will be valid
121
- - does `git commit` the generated checksums
164
+ ### Public API (YARD)
122
165
 
123
- ### ENV variables
166
+ - Module StoneChecksums (primary namespace)
167
+ - ::install_tasks() -> void — loads Rake tasks (delegates to GemChecksums.install_tasks)
168
+ - ::generate(git_dry_run: Boolean = false) -> void — generate SHA-256/512 checksums and commit (delegates to GemChecksums.generate)
169
+ - Error < GemChecksums::Error — error class hierarchy is preserved
170
+ - Version::VERSION: String — current gem version
171
+ - Module GemChecksums (deprecated, backward-compatible namespace)
172
+ - ::install_tasks() -> void — identical behavior
173
+ - ::generate(git_dry_run: Boolean = false) -> void — identical behavior
174
+ - Error — base error class used internally
175
+ - Version::VERSION: String — same as StoneChecksums::Version::VERSION
124
176
 
125
- Behavior can be controlled by ENV variables!
177
+ See the generated YARD docs for full details: [Current release on RubyDoc.info][🚎yard-current].
126
178
 
127
- - `GEM_CHECKSUMS_GIT_DRY_RUN` default value is `false`
128
- - when `true` the `git commit` command will run with `--dry-run` flag
129
- - when `true` the checksum files will be unstaged and deleted
130
- - `GEM_CHECKSUMS_CHECKSUMS_DIR` default value is `checksums` (relative path)
131
- - this directory will be created, relative to current working directory, if not present
132
- - `GEM_CHECKSUMS_PACKAGE_DIR` default value is `pkg` (relative path)
133
- - this directory will be searched for the latest gem package to generate checksums for
179
+ ## 🦷 FLOSS Funding
134
180
 
135
- ### ARGV
181
+ While galtzo-floss tools are free software and will always be, the project would benefit immensely from some funding.
182
+ Raising a monthly budget of... "dollars" would make the project more sustainable.
136
183
 
137
- If an argument is provided to the rake task it should be the path to
138
- a specific `.gem` package you want to generate checksums for.
184
+ We welcome both individual and corporate sponsors! We also offer a
185
+ wide array of funding channels to account for your preferences
186
+ (although currently [Open Collective][🖇osc] is our preferred funding platform).
139
187
 
140
- The script version does not accept arguments, and should be controlled by the ENV variables if needed.
188
+ **If you're working in a company that's making significant use of galtzo-floss tools we'd
189
+ appreciate it if you suggest to your company to become a galtzo-floss sponsor.**
141
190
 
142
- ### How To: Release gem with checksums generated by `stone_checksums`
191
+ You can support the development of galtzo-floss tools via
192
+ [GitHub Sponsors][🖇sponsor],
193
+ [Liberapay][⛳liberapay],
194
+ [PayPal][🖇paypal],
195
+ [Open Collective][🖇osc]
196
+ and [Tidelift][🏙️entsup-tidelift].
143
197
 
144
- Generating checksums makes sense when you are building and releasing a gem, so how does it fit into that process?
198
+ | 📍 NOTE |
199
+ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
200
+ | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
145
201
 
146
- NOTE: This is an example process which assumes your project has bundler binstubs, and a version.rb file,
147
- with notes for `zsh` and `bash` shells.
202
+ ### Open Collective for Individuals
148
203
 
149
- 1. Run `bin/setup && bin/rake` as a tests, coverage, & linting sanity check
150
- 2. Update the version number in `version.rb`
151
- 3. Run `bin/setup && bin/rake` again as a secondary check, and to update `Gemfile.lock`
152
- 4. Run `git commit -am "🔖 Prepare release v<VERSION>"` to commit the changes
153
- 5. Run `git push` to trigger the final CI pipeline before release, & merge PRs
154
- - NOTE: Remember to [check your project's CI][🧪build]!
155
- 6. Run `export GIT_TRUNK_BRANCH_NAME="$(git remote show origin | grep 'HEAD branch' | cut -d ' ' -f5)" && echo $GIT_TRUNK_BRANCH_NAME`
156
- 7. Run `git checkout $GIT_TRUNK_BRANCH_NAME`
157
- 8. Run `git pull origin $GIT_TRUNK_BRANCH_NAME` to ensure you will release the latest trunk code
158
- 9. Set `SOURCE_DATE_EPOCH` so `rake build` and `rake release` use same timestamp, and generate same checksums
159
- - Run `export SOURCE_DATE_EPOCH=$EPOCHSECONDS && echo $SOURCE_DATE_EPOCH`
160
- - If the echo above has no output, then it didn't work.
161
- - Note that you'll need the `zsh/datetime` module, if running `zsh`.
162
- - In `bash` you can use `date +%s` instead, i.e. `export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH`
163
- 10. Run `bundle exec rake build`
164
- 11. Run `gem_checksums` (from this gem, and added to path in .envrc,
165
- more context [1][🔒️rubygems-checksums-pr] and [2][🔒️rubygems-guides-pr]) to create SHA-256 and SHA-512 checksums
166
- - Checksums will be committed automatically by the script, but not pushed
167
- 12. Run `bundle exec rake release` which will create a git tag for the version,
168
- push git commits and tags, and push the `.gem` file to [rubygems.org][💎rubygems]
204
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
205
+ No backers yet. Be the first!
206
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
169
207
 
170
- [🧪build]: https://github.com/pboling/gem_checksums/actions
171
- [💎rubygems]: https://rubygems.org
172
- [🔒️rubygems-security-guide]: https://guides.rubygems.org/security/#building-gems
173
- [🔒️rubygems-checksums-pr]: https://github.com/rubygems/rubygems/pull/6022
174
- [🔒️rubygems-guides-pr]: https://github.com/rubygems/guides/pull/325
208
+ Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/galtzo-floss#backer)]
175
209
 
176
- ### Too many steps?
210
+ ### Open Collective for Organizations
177
211
 
178
- If you don't follow the steps above you'll end up seeing this error:
212
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
213
+ No sponsors yet. Be the first!
214
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
179
215
 
180
- ```
181
- WARNING: Build time not provided via environment variable SOURCE_DATE_EPOCH.
182
- To ensure consistent SHA-256 & SHA-512 checksums,
183
- you must set this environment variable *before* building the gem.
216
+ Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/galtzo-floss#sponsor)]
184
217
 
185
- IMPORTANT: After setting the build time, you *must re-build the gem*, i.e. bundle exec rake build, or gem build.
218
+ ### Another way to support open-source
186
219
 
187
- How to set the build time:
220
+ > How wonderful it is that nobody need wait a single moment before starting to improve the world.<br/>
221
+ >—Anne Frank
188
222
 
189
- In zsh shell:
190
- - export SOURCE_DATE_EPOCH=$EPOCHSECONDS && echo $SOURCE_DATE_EPOCH
191
- - If the echo above has no output, then it didn't work.
192
- - Note that you'll need the `zsh/datetime` module enabled.
223
+ I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions — totaling 79 hours of FLOSS coding over just the past seven days, a pretty regular week for me. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
193
224
 
194
- In fish shell:
195
- - set -x SOURCE_DATE_EPOCH (date +%s)
196
- - echo $SOURCE_DATE_EPOCH
225
+ If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
197
226
 
198
- In bash shell:
199
- - export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH`
200
- ```
227
+ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look.
201
228
 
202
- Just do what it says!
229
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
230
+
231
+ [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
203
232
 
204
233
  ## 🔐 Security
205
234
 
@@ -208,26 +237,29 @@ See [SECURITY.md][🔐security].
208
237
  ## 🤝 Contributing
209
238
 
210
239
  If you need some ideas of where to help, you could work on adding more code coverage,
211
- or if it is already 💯 (see [below](#code-coverage)) check TODOs (see [below](#todos)),
212
- or check [issues][🤝issues], or [PRs][🤝pulls],
240
+ or if it is already 💯 (see [below](#code-coverage)) check [reek](REEK), [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
213
241
  or use the gem and think about how it could be better.
214
242
 
215
243
  We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
216
244
 
217
245
  See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
218
246
 
219
- ### TODOs
247
+ ### 🚀 Release Instructions
220
248
 
221
- - [ ] Prepend `rake build` task with check for `SOURCE_DATE_EPOCH` environment variable, and raise error if not set.
249
+ See [CONTRIBUTING.md][🤝contributing].
222
250
 
223
251
  ### Code Coverage
224
252
 
225
- [![Coverage Graph][🔑codecov-g♻️]][🔑codecov]
253
+ [![Coverage Graph][🔑codecov-g]][🔑codecov]
254
+
255
+ [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
256
+
257
+ [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov]
226
258
 
227
259
  ### 🪇 Code of Conduct
228
260
 
229
- Everyone interacting in this project's codebases, issue trackers,
230
- chat rooms and mailing lists is expected to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
261
+ Everyone interacting with this project's codebases, issue trackers,
262
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
231
263
 
232
264
  ## 🌈 Contributors
233
265
 
@@ -235,18 +267,21 @@ chat rooms and mailing lists is expected to follow the [![Contributor Covenant 2
235
267
 
236
268
  Made with [contributors-img][🖐contrib-rocks].
237
269
 
238
- Also see GitLab Contributors: [https://gitlab.com/pboling/gem_checksums/-/graphs/main][🚎contributors-gl]
270
+ Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/stone_checksums/-/graphs/main][🚎contributors-gl]
239
271
 
240
- ## ⭐️ Star History
272
+ <details>
273
+ <summary>⭐️ Star History</summary>
241
274
 
242
- <a href="https://star-history.com/#pboling/gem_checksums&Date">
275
+ <a href="https://star-history.com/#galtzo-floss/stone_checksums&Date">
243
276
  <picture>
244
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=pboling/gem_checksums&type=Date&theme=dark" />
245
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=pboling/gem_checksums&type=Date" />
246
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=pboling/gem_checksums&type=Date" />
277
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/stone_checksums&type=Date&theme=dark" />
278
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/stone_checksums&type=Date" />
279
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=galtzo-floss/stone_checksums&type=Date" />
247
280
  </picture>
248
281
  </a>
249
282
 
283
+ </details>
284
+
250
285
  ## 📌 Versioning
251
286
 
252
287
  This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
@@ -255,34 +290,35 @@ Specifically, if a minor or patch version is released that breaks backward compa
255
290
  a new version should be immediately released that restores compatibility.
256
291
  Breaking changes to the public API will only be introduced with new major versions.
257
292
 
258
- ### 📌 Is "Platform Support" part of the public API?
293
+ > dropping support for a platform is both obviously and objectively a breaking change <br/>
294
+ >—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
259
295
 
260
- Yes. But I'm obligated to include notes...
296
+ I understand that policy doesn't work universally ("exceptions to every rule!"),
297
+ but it is the policy here.
298
+ As such, in many cases it is good to specify a dependency on this library using
299
+ the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
261
300
 
262
- SemVer should, but doesn't explicitly, say that dropping support for specific Platforms
263
- is a *breaking change* to an API.
264
- It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
301
+ For example:
302
+
303
+ ```ruby
304
+ spec.add_dependency("stone_checksums", "~> 1.0")
305
+ ```
265
306
 
266
- > dropping support for a platform is both obviously and objectively a breaking change
307
+ <details>
308
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
267
309
 
268
- - Jordan Harband (@ljharb) [in SemVer issue 716][📌semver-breaking]
310
+ SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
311
+ is a *breaking change* to an API.
312
+ It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
269
313
 
270
314
  To get a better understanding of how SemVer is intended to work over a project's lifetime,
271
315
  read this article from the creator of SemVer:
272
316
 
273
317
  - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
274
318
 
275
- As a result of this policy, and the interpretive lens used by the maintainer,
276
- you can (and should) specify a dependency on these libraries using
277
- the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
278
-
279
- For example:
280
-
281
- ```ruby
282
- spec.add_dependency("gem_checksums", "~> 1.1")
283
- ```
319
+ </details>
284
320
 
285
- See [CHANGELOG.md][📌changelog] for list of releases.
321
+ See [CHANGELOG.md][📌changelog] for a list of releases.
286
322
 
287
323
  ## 📄 License
288
324
 
@@ -292,120 +328,163 @@ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright
292
328
 
293
329
  ### © Copyright
294
330
 
295
- <p>
296
- Copyright (c) 2022 - 2025 Peter H. Boling,
297
- <a href="https://railsbling.com">
298
- RailsBling.com
299
- <picture>
300
- <img alt="Rails Bling" height="20" src="https://railsbling.com/images/logos/RailsBling-TrainLogo.svg" />
301
- </picture>
302
- </a>
303
- </p>
331
+ <ul>
332
+ <li>
333
+ Copyright (c) 2023, 2025 Peter H. Boling, of
334
+ <a href="https://discord.gg/3qme4XHNKN">
335
+ Galtzo.com
336
+ <picture>
337
+ <img src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px-blank.svg" alt="Galtzo.com Logo (Wordless) by Aboling0, CC BY-SA 4.0" width="24">
338
+ </picture>
339
+ </a>, and stone_checksums contributors.
340
+ </li>
341
+ </ul>
342
+
343
+ ## 🤑 A request for help
344
+
345
+ Maintainers have teeth, and need to pay their dentists.
346
+ After getting laid off in an RIF in March, and filled with many dozens of rejections,
347
+ I'm now spending ~80 hours a week building open source tools.
348
+ I'm hoping to be able to pay for my kids' health insurance this month,
349
+ so if you value the work I am doing, I need your support.
350
+ Please consider sponsoring me or the project.
304
351
 
305
- ## 🤑 One more thing
352
+ [![Sponsor galtzo-floss/stone_checksums on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay-img] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal-img]
306
353
 
307
- You made it to the bottom of the page,
308
- so perhaps you'll indulge me for another 20 seconds.
309
- I maintain many dozens of gems, including this one,
310
- because I want Ruby to be a great place for people to solve problems, big and small.
311
- Please consider supporting my efforts via the giant yellow link below,
312
- or one of the others at the head of this README.
354
+ To say "thanks for maintaining such a great tool" 👇️ Join the Discord or ☝️ send money.
313
355
 
314
- [![Buy me a latte][🖇buyme-img]][🖇buyme]
356
+ To join the community or get help 👇️ Join the Discord.
357
+
358
+ [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
359
+
360
+ ### Please give the project a star ⭐ ♥.
361
+
362
+ Thanks for RTFM. ☺️
363
+
364
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611
365
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
366
+ [⛳liberapay]: https://liberapay.com/pboling/donate
367
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss
368
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss
369
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss
370
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge
371
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge
372
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge
373
+ [🖇osc]: https://opencollective.com/galtzo-floss
374
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
375
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
376
+ [🖇sponsor]: https://github.com/sponsors/pboling
377
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg
378
+ [🖇polar]: https://polar.sh/pboling
379
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-✓-a51611.svg
380
+ [🖇kofi]: https://ko-fi.com/O5O86SNP4
381
+ [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg
382
+ [🖇patreon]: https://patreon.com/galtzo
383
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-a51611.svg?style=flat
384
+ [🖇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
385
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
386
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
387
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
388
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
389
+ [🖇floss-funding.dev]: https://floss-funding.dev
390
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
391
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
392
+ [✉️discord-invite-img]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge
315
393
 
316
394
  [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
317
- [⛳️gem-namespace]: https://github.com/pboling/gem_checksums/blob/main/lib/gem_checksums.rb
318
- [⛳️namespace-img]: https://img.shields.io/badge/namespace-GemChecksums-brightgreen.svg?style=flat&logo=ruby&logoColor=white
395
+ [⛳️gem-namespace]: https://github.com/galtzo-floss/stone_checksums
396
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-StoneChecksums-3C2D2D.svg?style=square&logo=ruby&logoColor=white
319
397
  [⛳️gem-name]: https://rubygems.org/gems/stone_checksums
320
- [⛳️name-img]: https://img.shields.io/badge/name-stone__checksums-brightgreen.svg?style=flat&logo=rubygems&logoColor=red
321
- [🚂bdfl-blog]: http://www.railsbling.com/tags/gem_checksums
322
- [🚂bdfl-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
323
- [🚂bdfl-contact]: http://www.railsbling.com/contact
324
- [🚂bdfl-contact-img]: https://img.shields.io/badge/Contact-BDFL-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
398
+ [⛳️name-img]: https://img.shields.io/badge/name-stone__checksums-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
399
+ [🚂maint-blog]: http://www.railsbling.com/tags/stone_checksums
400
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
401
+ [🚂maint-contact]: http://www.railsbling.com/contact
402
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
325
403
  [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
326
404
  [💖🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-LinkedIn-0B66C2?style=flat&logo=newjapanprowrestling
327
- [💖✌️wellfound]: https://angel.co/u/peter-boling
405
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling/u/peter-boling
328
406
  [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
329
407
  [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
330
408
  [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
331
409
  [💖🐘ruby-mast]: https://ruby.social/@galtzo
332
410
  [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=flat&logo=mastodon&label=Ruby%20%40galtzo
333
- [💖🦋bluesky]: https://galtzo.bsky.social
334
- [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.bsky.social-0285FF?style=flat&logo=bluesky&logoColor=white
411
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
412
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
335
413
  [💖🌳linktree]: https://linktr.ee/galtzo
336
414
  [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
337
415
  [💖💁🏼‍♂️devto]: https://dev.to/galtzo
338
416
  [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
339
417
  [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
340
418
  [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
419
+ [💖🧊berg]: https://codeberg.org/pboling
420
+ [💖🐙hub]: https://github.org/pboling
421
+ [💖🛖hut]: https://sr.ht/~galtzo/
422
+ [💖🧪lab]: https://gitlab.com/pboling
341
423
  [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
342
424
  [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
343
425
  [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
344
426
  [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
345
- [🏙️entsup-tidelift]: https://tidelift.com/subscription
427
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-stone_checksums?utm_source=rubygems-stone_checksums&utm_medium=referral&utm_campaign=readme
346
428
  [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
347
429
  [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
348
430
  [💁🏼‍♂️peterboling]: http://www.peterboling.com
349
431
  [🚂railsbling]: http://www.railsbling.com
350
432
  [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
351
- [📜src-gl]: https://gitlab.com/pboling/gem_checksums/
433
+ [📜src-gl]: https://gitlab.com/galtzo-floss/stone_checksums/
434
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
435
+ [📜src-cb]: https://codeberg.org/galtzo-floss/stone_checksums
352
436
  [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
353
- [📜src-gh]: https://github.com/pboling/gem_checksums
437
+ [📜src-gh]: https://github.com/galtzo-floss/stone_checksums
354
438
  [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
355
- [📜docs-head-rd-img]: https://img.shields.io/badge/RubyDoc-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
356
- [📜wiki]: https://gitlab.com/pboling/gem_checksums/-/wikis/home
439
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
440
+ [📜wiki]: https://gitlab.com/galtzo-floss/stone_checksums/-/wikis/home
357
441
  [📜wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=Wiki&logoColor=white
358
442
  [👽dl-rank]: https://rubygems.org/gems/stone_checksums
359
443
  [👽dl-ranki]: https://img.shields.io/gem/rd/stone_checksums.svg
360
- [👽oss-help]: https://www.codetriage.com/pboling/gem_checksums
361
- [👽oss-helpi]: https://www.codetriage.com/pboling/gem_checksums/badges/users.svg
444
+ [👽oss-help]: https://www.codetriage.com/galtzo-floss/stone_checksums
445
+ [👽oss-helpi]: https://www.codetriage.com/galtzo-floss/stone_checksums/badges/users.svg
362
446
  [👽version]: https://rubygems.org/gems/stone_checksums
363
447
  [👽versioni]: https://img.shields.io/gem/v/stone_checksums.svg
364
- [🔑cc-mnt]: https://codeclimate.com/github/pboling/gem_checksums/maintainability
365
- [🔑cc-mnti♻️]: https://api.codeclimate.com/v1/badges/ff2234fcbe9051436f37/maintainability
366
- [🔑cc-cov]: https://codeclimate.com/github/pboling/gem_checksums/test_coverage
367
- [🔑cc-covi♻️]: https://api.codeclimate.com/v1/badges/ff2234fcbe9051436f37/test_coverage
368
- [🔑codecov]: https://codecov.io/gh/pboling/gem_checksums
369
- [🔑codecovi♻️]: https://codecov.io/gh/pboling/gem_checksums/branch/main/graph/badge.svg?token=iQykVGCFME
370
- [🔑coveralls]: https://coveralls.io/github/pboling/gem_checksums?branch=main
371
- [🔑coveralls-img]: https://coveralls.io/repos/github/pboling/gem_checksums/badge.svg?branch=main
372
- [🔑depfu]: https://depfu.com/github/pboling/gem_checksums
373
- [🔑depfui♻️]: https://badges.depfu.com/badges/85187dfdd2ecf7839b2ec78c64d2bf4e/count.svg
374
- [🖐codeQL]: https://github.com/pboling/gem_checksums/security/code-scanning
375
- [🖐codeQL-img]: https://github.com/pboling/gem_checksums/actions/workflows/codeql-analysis.yml/badge.svg
376
- [🚎1-an-wf]: https://github.com/pboling/gem_checksums/actions/workflows/ancient.yml
377
- [🚎1-an-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/ancient.yml/badge.svg
378
- [🚎2-cov-wf]: https://github.com/pboling/gem_checksums/actions/workflows/coverage.yml
379
- [🚎2-cov-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/coverage.yml/badge.svg
380
- [🚎3-hd-wf]: https://github.com/pboling/gem_checksums/actions/workflows/heads.yml
381
- [🚎3-hd-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/heads.yml/badge.svg
382
- [🚎4-lg-wf]: https://github.com/pboling/gem_checksums/actions/workflows/legacy.yml
383
- [🚎4-lg-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/legacy.yml/badge.svg
384
- [🚎5-st-wf]: https://github.com/pboling/gem_checksums/actions/workflows/style.yml
385
- [🚎5-st-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/style.yml/badge.svg
386
- [🚎6-s-wf]: https://github.com/pboling/gem_checksums/actions/workflows/supported.yml
387
- [🚎6-s-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/supported.yml/badge.svg
388
- [🚎7-us-wf]: https://github.com/pboling/gem_checksums/actions/workflows/unsupported.yml
389
- [🚎7-us-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/unsupported.yml/badge.svg
390
- [🚎8-ho-wf]: https://github.com/pboling/gem_checksums/actions/workflows/hoary.yml
391
- [🚎8-ho-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/hoary.yml/badge.svg
392
- [🚎9-t-wf]: https://github.com/pboling/gem_checksums/actions/workflows/truffle.yml
393
- [🚎9-t-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/truffle.yml/badge.svg
394
- [🚎10-j-wf]: https://github.com/pboling/gem_checksums/actions/workflows/jruby.yml
395
- [🚎10-j-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/jruby.yml/badge.svg
396
- [🚎11-c-wf]: https://github.com/pboling/gem_checksums/actions/workflows/current.yml
397
- [🚎11-c-wfi]: https://github.com/pboling/gem_checksums/actions/workflows/current.yml/badge.svg
398
- [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
399
- [⛳liberapay]: https://liberapay.com/pboling/donate
400
- [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
401
- [🖇sponsor]: https://github.com/sponsors/pboling
402
- [🖇polar-img]: https://polar.sh/embed/seeks-funding-shield.svg?org=pboling
403
- [🖇polar]: https://polar.sh/pboling
404
- [🖇kofi-img]: https://img.shields.io/badge/buy_me_coffee-donate-yellow.svg
405
- [🖇kofi]: https://ko-fi.com/O5O86SNP4
406
- [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-yellow.svg
407
- [🖇patreon]: https://patreon.com/galtzo
408
- [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
448
+ [🔑qlty-mnt]: https://qlty.sh/gh/galtzo-floss/projects/stone_checksums
449
+ [🔑qlty-mnti]: https://qlty.sh/gh/galtzo-floss/projects/stone_checksums/maintainability.svg
450
+ [🔑qlty-cov]: https://qlty.sh/gh/galtzo-floss/projects/stone_checksums/metrics/code?sort=coverageRating
451
+ [🔑qlty-covi]: https://qlty.sh/gh/galtzo-floss/projects/stone_checksums/coverage.svg
452
+ [🔑codecov]: https://codecov.io/gh/galtzo-floss/stone_checksums
453
+ [🔑codecovi]: https://codecov.io/gh/galtzo-floss/stone_checksums/graph/badge.svg
454
+ [🔑coveralls]: https://coveralls.io/github/galtzo-floss/stone_checksums?branch=main
455
+ [🔑coveralls-img]: https://coveralls.io/repos/github/galtzo-floss/stone_checksums/badge.svg?branch=main
456
+ [🖐codeQL]: https://github.com/galtzo-floss/stone_checksums/security/code-scanning
457
+ [🖐codeQL-img]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/codeql-analysis.yml/badge.svg
458
+ [🚎1-an-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/ancient.yml
459
+ [🚎1-an-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/ancient.yml/badge.svg
460
+ [🚎2-cov-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/coverage.yml
461
+ [🚎2-cov-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/coverage.yml/badge.svg
462
+ [🚎3-hd-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/heads.yml
463
+ [🚎3-hd-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/heads.yml/badge.svg
464
+ [🚎4-lg-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/legacy.yml
465
+ [🚎4-lg-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/legacy.yml/badge.svg
466
+ [🚎5-st-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/style.yml
467
+ [🚎5-st-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/style.yml/badge.svg
468
+ [🚎6-s-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/supported.yml
469
+ [🚎6-s-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/supported.yml/badge.svg
470
+ [🚎7-us-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/unsupported.yml
471
+ [🚎7-us-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/unsupported.yml/badge.svg
472
+ [🚎8-ho-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/hoary.yml
473
+ [🚎8-ho-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/hoary.yml/badge.svg
474
+ [🚎9-t-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/truffle.yml
475
+ [🚎9-t-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/truffle.yml/badge.svg
476
+ [🚎10-j-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/jruby.yml
477
+ [🚎10-j-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/jruby.yml/badge.svg
478
+ [🚎11-c-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/current.yml
479
+ [🚎11-c-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/current.yml/badge.svg
480
+ [🚎13-🔒️-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/locked_deps.yml
481
+ [🚎13-🔒️-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/locked_deps.yml/badge.svg
482
+ [🚎14-🔓️-wf]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/unlocked_deps.yml
483
+ [🚎14-🔓️-wfi]: https://github.com/galtzo-floss/stone_checksums/actions/workflows/unlocked_deps.yml/badge.svg
484
+ [💎ruby-1.9i]: https://img.shields.io/badge/Ruby-1.9_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
485
+ [💎ruby-2.0i]: https://img.shields.io/badge/Ruby-2.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
486
+ [💎ruby-2.1i]: https://img.shields.io/badge/Ruby-2.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
487
+ [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
409
488
  [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
410
489
  [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
411
490
  [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
@@ -417,46 +496,58 @@ or one of the others at the head of this README.
417
496
  [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
418
497
  [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
419
498
  [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
420
- [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
499
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
421
500
  [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
422
501
  [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
423
502
  [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
424
503
  [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
425
- [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1-FBE742?style=for-the-badge&logo=ruby&logoColor=red
426
- [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
427
- [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
504
+ [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
505
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
506
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
507
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
428
508
  [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
429
509
  [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
430
- [🤝issues]: https://github.com/pboling/gem_checksums/issues
431
- [🤝pulls]: https://github.com/pboling/gem_checksums/pulls
510
+ [🤝gh-issues]: https://github.com/galtzo-floss/stone_checksums/issues
511
+ [🤝gh-pulls]: https://github.com/galtzo-floss/stone_checksums/pulls
512
+ [🤝gl-issues]: https://gitlab.com/galtzo-floss/stone_checksums/-/issues
513
+ [🤝gl-pulls]: https://gitlab.com/galtzo-floss/stone_checksums/-/merge_requests
514
+ [🤝cb-issues]: https://codeberg.org/galtzo-floss/stone_checksums/issues
515
+ [🤝cb-pulls]: https://codeberg.org/galtzo-floss/stone_checksums/pulls
516
+ [🤝cb-donate]: https://donate.codeberg.org/
432
517
  [🤝contributing]: CONTRIBUTING.md
433
- [🔑codecov-g♻️]: https://codecov.io/gh/pboling/gem_checksums/graphs/tree.svg?token=iQykVGCFME
518
+ [🔑codecov-g]: https://codecov.io/gh/galtzo-floss/stone_checksums/graphs/tree.svg
434
519
  [🖐contrib-rocks]: https://contrib.rocks
435
- [🖐contributors]: https://github.com/pboling/gem_checksums/graphs/contributors
436
- [🖐contributors-img]: https://contrib.rocks/image?repo=pboling/gem_checksums
437
- [🚎contributors-gl]: https://gitlab.com/pboling/gem_checksums/-/graphs/main
520
+ [🖐contributors]: https://github.com/galtzo-floss/stone_checksums/graphs/contributors
521
+ [🖐contributors-img]: https://contrib.rocks/image?repo=galtzo-floss/stone_checksums
522
+ [🚎contributors-gl]: https://gitlab.com/galtzo-floss/stone_checksums/-/graphs/main
438
523
  [🪇conduct]: CODE_OF_CONDUCT.md
439
- [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-4baaaa.svg
524
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
440
525
  [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
441
526
  [📌semver]: https://semver.org/spec/v2.0.0.html
442
- [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
527
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
443
528
  [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
444
529
  [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
445
530
  [📌changelog]: CHANGELOG.md
446
531
  [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
447
- [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
532
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
533
+ [📌gitmoji]:https://gitmoji.dev
534
+ [📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square
448
535
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
449
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.075-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
536
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.097-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
450
537
  [🔐security]: SECURITY.md
451
- [🔐security-img]: https://img.shields.io/badge/security-policy-brightgreen.svg?style=flat
538
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
452
539
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
453
540
  [📄license]: LICENSE.txt
454
541
  [📄license-ref]: https://opensource.org/licenses/MIT
455
- [📄license-img]: https://img.shields.io/badge/License-MIT-green.svg
542
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
456
543
  [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
457
- [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-brightgreen.svg?style=flat
544
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
458
545
  [🚎yard-current]: http://rubydoc.info/gems/stone_checksums
459
- [🚎yard-head]: https://rubydoc.info/github/pboling/gem_checksums/main
460
- [🖇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
461
- [🖇buyme]: https://www.buymeacoffee.com/pboling
462
- [🖇buyme-small-img]: https://img.shields.io/badge/Buy--Me--A--Coffee-✓-brightgreen.svg?style=flat
546
+ [🚎yard-head]: https://rspec-stubbed-env.galtzo.com
547
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
548
+ [💎SHA_checksums]: https://gitlab.com/galtzo-floss/stone_checksums/-/tree/main/checksums
549
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
550
+ [💎rlts-img]: https://img.shields.io/badge/code_style_%26_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
551
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
552
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
553
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/