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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +45 -7
- data/CODE_OF_CONDUCT.md +3 -4
- data/CONTRIBUTING.md +111 -48
- data/README.md +371 -281
- data/lib/gem_checksums/version.rb +7 -1
- data/lib/gem_checksums.rb +104 -50
- data/lib/stone_checksums/version.rb +11 -0
- data/lib/stone_checksums.rb +55 -1
- data/sig/gem_checksums.rbs +14 -0
- data/sig/stone_checksums.rbs +13 -0
- data.tar.gz.sig +0 -0
- metadata +62 -101
- metadata.gz.sig +0 -0
data/README.md
CHANGED
@@ -1,205 +1,233 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
[
|
4
|
-
[
|
5
|
-
[
|
6
|
-
[
|
7
|
-
[
|
8
|
-
[
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
[![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf]
|
13
|
-
|
14
|
-
[
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
41
|
-
|
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
|
-
|
35
|
+
## 💡 Info you can shake a stick at
|
45
36
|
|
46
|
-
|
47
|
-
```shell
|
48
|
-
gem_checksums
|
49
|
-
```
|
37
|
+
### Federated DVCS
|
50
38
|
|
51
|
-
|
39
|
+
<details>
|
40
|
+
<summary>Find this repo on other forges (Coming soon!)</summary>
|
52
41
|
|
53
|
-
|
|
54
|
-
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
49
|
+
</details>
|
68
50
|
|
69
|
-
|
51
|
+
[gh-discussions]: https://github.com/galtzo-floss/stone_checksums/discussions
|
70
52
|
|
71
|
-
|
72
|
-
bundle add stone_checksums
|
73
|
-
```
|
53
|
+
### Enterprise Support [](https://tidelift.com/subscription/pkg/rubygems-stone_checksums?utm_source=rubygems-stone_checksums&utm_medium=referral&utm_campaign=readme)
|
74
54
|
|
75
|
-
|
55
|
+
<details>
|
56
|
+
<summary>Need enterprise-level guarantees?</summary>
|
76
57
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
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
|
-
|
87
|
-
|
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
|
-
|
118
|
+
The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
|
91
119
|
|
92
|
-
|
120
|
+
If you want to up your security game full-time:
|
93
121
|
|
94
|
-
```
|
95
|
-
|
96
|
-
gem_checksums
|
122
|
+
```console
|
123
|
+
bundle config set --global trust-policy MediumSecurity
|
97
124
|
```
|
98
125
|
|
99
|
-
|
126
|
+
`MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
|
100
127
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
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
|
-
|
157
|
+
Usage via CLI (equivalent):
|
113
158
|
|
114
|
-
```
|
115
|
-
|
116
|
-
rake build:generate_checksums
|
159
|
+
```console
|
160
|
+
bin/gem_checksums [pkg/your_gem-1.2.3.gem]
|
117
161
|
```
|
118
162
|
|
119
|
-
|
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
|
-
|
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
|
-
|
176
|
+
See the generated YARD docs for full details: [Current release on RubyDoc.info][🚎yard-current].
|
126
177
|
|
127
|
-
|
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
|
-
|
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
|
-
|
138
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
147
|
-
with notes for `zsh` and `bash` shells.
|
201
|
+
### Open Collective for Individuals
|
148
202
|
|
149
|
-
|
150
|
-
|
151
|
-
|
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
|
-
[
|
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
|
-
###
|
209
|
+
### Open Collective for Organizations
|
177
210
|
|
178
|
-
|
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
|
-
|
217
|
+
### Another way to support open-source
|
186
218
|
|
187
|
-
How to
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
-
###
|
246
|
+
### 🚀 Release Instructions
|
220
247
|
|
221
|
-
|
248
|
+
See [CONTRIBUTING.md][🤝contributing].
|
222
249
|
|
223
250
|
### Code Coverage
|
224
251
|
|
225
|
-
[![Coverage Graph][🔑codecov-g
|
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
|
230
|
-
chat rooms and mailing lists
|
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/
|
269
|
+
Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/stone_checksums/-/graphs/main][🚎contributors-gl]
|
239
270
|
|
240
|
-
|
271
|
+
<details>
|
272
|
+
<summary>⭐️ Star History</summary>
|
241
273
|
|
242
|
-
<a href="https://star-history.com/#
|
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=
|
245
|
-
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=
|
246
|
-
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=
|
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
|
-
|
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
|
-
|
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
|
-
|
263
|
-
|
264
|
-
|
300
|
+
For example:
|
301
|
+
|
302
|
+
```ruby
|
303
|
+
spec.add_dependency("stone_checksums", "~> 1.0")
|
304
|
+
```
|
265
305
|
|
266
|
-
>
|
306
|
+
<details>
|
307
|
+
<summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
|
267
308
|
|
268
|
-
|
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
|
-
|
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
|
-
<
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
</
|
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
|
-
|
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
|
-
|
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
|
-
|
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/
|
318
|
-
[⛳️namespace-img]: https://img.shields.io/badge/namespace-
|
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-
|
321
|
-
[🚂
|
322
|
-
[🚂
|
323
|
-
[🚂
|
324
|
-
[🚂
|
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://
|
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.
|
334
|
-
[💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.
|
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/
|
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/
|
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/
|
356
|
-
[📜wiki]: https://gitlab.com/
|
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/
|
361
|
-
[👽oss-helpi]: https://www.codetriage.com/
|
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
|
-
[🔑
|
365
|
-
[🔑
|
366
|
-
[🔑
|
367
|
-
[🔑
|
368
|
-
[🔑codecov]: https://codecov.io/gh/
|
369
|
-
[🔑codecovi
|
370
|
-
[🔑coveralls]: https://coveralls.io/github/
|
371
|
-
[🔑coveralls-img]: https://coveralls.io/repos/github/
|
372
|
-
[
|
373
|
-
[
|
374
|
-
[
|
375
|
-
[
|
376
|
-
[🚎
|
377
|
-
[🚎
|
378
|
-
[🚎
|
379
|
-
[🚎
|
380
|
-
[🚎
|
381
|
-
[🚎
|
382
|
-
[🚎
|
383
|
-
[🚎
|
384
|
-
[🚎
|
385
|
-
[🚎
|
386
|
-
[🚎
|
387
|
-
[🚎
|
388
|
-
[🚎
|
389
|
-
[🚎
|
390
|
-
[🚎
|
391
|
-
[🚎
|
392
|
-
[🚎
|
393
|
-
[🚎
|
394
|
-
[🚎
|
395
|
-
[🚎
|
396
|
-
[🚎
|
397
|
-
[🚎
|
398
|
-
[
|
399
|
-
[
|
400
|
-
[
|
401
|
-
[
|
402
|
-
[
|
403
|
-
[
|
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.
|
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.
|
426
|
-
[💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.
|
427
|
-
[💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.
|
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/
|
431
|
-
[🤝pulls]: https://github.com/
|
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
|
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/
|
436
|
-
[🖐contributors-img]: https://contrib.rocks/image?repo=
|
437
|
-
[🚎contributors-gl]: https://gitlab.com/
|
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-
|
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-
|
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-
|
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.
|
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-
|
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-
|
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-✓-
|
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://
|
460
|
-
[
|
461
|
-
[
|
462
|
-
[
|
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/
|