stone_checksums 1.0.0 → 1.0.2

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