version_gem 1.1.6 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 779a53b7ab4b5e47e80eedc36f0551e2786886dcac2eb91928537bc9535793cd
4
- data.tar.gz: 8c51c4dc1e88dd9e144dc22197f3992096e2da71ab55e324ca59aec907a40eb1
3
+ metadata.gz: f457e0e7c9cc404965d171bec3c4a3703a90450291032992f4ea50e8a27933b7
4
+ data.tar.gz: c68b6defc2beeb3bc81a131cead2b865d3ad62ec39419a3eb9cb90a41fcf3672
5
5
  SHA512:
6
- metadata.gz: 4944471f27fa5bf9013c4f1009ae0ae21f81fe92b345ff3f5a4b400861147dbbb67d10323222278dacb1b92a1f4eddf2e2fc6aef069e3e7b89d637507ee70518
7
- data.tar.gz: 7a030e85c153ec35b2075a18e24a3ba3f64b8fb6c7891f794beea9e45c7b4a130e32e6a350a397a4df3888981704696c2f1fb6d076a362da5fa0a578ed7326f9
6
+ metadata.gz: 2d03578bb83c1bfb270d81cb041ce2e9fb1689ce1dfbefaab4f69c28661e4f2c34ecf752d941f501d978167c232dcf7012b12a3d99e96e74d0bf949c51d1eaed
7
+ data.tar.gz: a24a29785103417074f6bf6e8ec8a8281c71fe67a3ab079386b44a31a82bdac2218625084e8ee8db6a95af8ceefd635ef51daefac30ddd8f8ddc166c438163c6
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -22,6 +22,31 @@ Please file a bug if you notice a violation of semantic versioning.
22
22
  ### Fixed
23
23
  ### Removed
24
24
 
25
+ ## [1.1.8] 2025-05-06 ([tag][1.1.8t])
26
+ - Line Coverage: 100.0% (117 / 117)
27
+ - Branch Coverage: 100.0% (4 / 4)
28
+ - 84.62% documented
29
+ ### Added
30
+ - CITATION.cff (@pboling)
31
+ - Cryptographically signed with new 20-year cert (@pboling)
32
+ - expires 2045-04-29
33
+ - Improved documentation (@pboling)
34
+ - Addressed entire REEK list (@pboling)
35
+ - GitLab CI, as an addition to existing GHA (@pboling)
36
+
37
+ ## [1.1.7] 2025-04-15 ([tag][1.1.7t])
38
+ - Line Coverage: 100.0% (117 / 117)
39
+ - Branch Coverage: 100.0% (4 / 4)
40
+ - 76.92% documented
41
+ ### Added
42
+ - Support for Epoch Semantic Versioning (@pboling)
43
+ - `extend VersionGem::Epoch` in your library's `MyLib::Version` module
44
+ - Support for JRuby 10 (@pboling)
45
+ - More documentation (@pboling)
46
+ ### Removed
47
+ - Ruby 2.2 removed from CI, though technically still supported
48
+ - can't run directly in GHA anymore
49
+
25
50
  ## [1.1.6] 2025-02-24 ([tag][1.1.6t])
26
51
  - Line Coverage: 100.0% (77 / 77)
27
52
  - Branch Coverage: 100.0% (2 / 2)
@@ -117,7 +142,11 @@ Please file a bug if you notice a violation of semantic versioning.
117
142
  ### Added
118
143
  - Initial release, with basic version parsing API (@pboling)
119
144
 
120
- [Unreleased]: https://gitlab.com/oauth-xx/version_gem/-/compare/v1.1.6...main
145
+ [Unreleased]: https://gitlab.com/oauth-xx/version_gem/-/compare/v1.1.8...main
146
+ [1.1.8]: https://gitlab.com/oauth-xx/version_gem/-/compare/v1.1.7...v1.1.8
147
+ [1.1.8t]: https://gitlab.com/oauth-xx/oauth2/-/tags/v1.1.8
148
+ [1.1.7]: https://gitlab.com/oauth-xx/version_gem/-/compare/v1.1.6...v1.1.7
149
+ [1.1.7t]: https://gitlab.com/oauth-xx/oauth2/-/tags/v1.1.7
121
150
  [1.1.6]: https://gitlab.com/oauth-xx/version_gem/-/compare/v1.1.5...v1.1.6
122
151
  [1.1.6t]: https://gitlab.com/oauth-xx/oauth2/-/tags/v1.1.6
123
152
  [1.1.5]: https://gitlab.com/oauth-xx/version_gem/-/compare/v1.1.4...v1.1.5
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/CONTRIBUTING.md CHANGED
@@ -84,11 +84,14 @@ Also see GitLab Contributors: [https://gitlab.com/oauth-xx/version_gem/-/graphs/
84
84
 
85
85
  ### One-time, Per-maintainer, Setup
86
86
 
87
- **IMPORTANT**: Your public key for signing gems will need to be picked up by the line in the
88
- `gemspec` defining the `spec.cert_chain` (check the relevant ENV variables there),
89
- in order to sign the new release.
87
+ **IMPORTANT**: If you want to sign the build you create,
88
+ your public key for signing gems will need to be picked up by the line in the
89
+ `gemspec` defining the `spec.cert_chain` (check the relevant ENV variables there).
90
+ All releases to RubyGems.org will be signed.
90
91
  See: [RubyGems Security Guide][🔒️rubygems-security-guide]
91
92
 
93
+ NOTE: To build without signing the gem you must set `SKIP_GEM_SIGNING` to some value in your environment.
94
+
92
95
  ### To release a new version:
93
96
 
94
97
  1. Run `bin/setup && bin/rake` as a tests, coverage, & linting sanity check
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # VersionGem
1
+ # 🔖 VersionGem
2
2
 
3
3
  [![Version][👽versioni]][👽version]
4
4
  [![License: MIT][📄license-img]][📄license-ref]
@@ -17,7 +17,6 @@
17
17
  [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf]
18
18
  [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf]
19
19
  [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf]
20
- [![CI Hoary][🚎8-ho-wfi]][🚎8-ho-wf]
21
20
  [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf]
22
21
  [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
23
22
 
@@ -26,11 +25,11 @@
26
25
  [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay]
27
26
  [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor]
28
27
  [![Buy me a coffee][🖇buyme-small-img]][🖇buyme]
29
- [![Polar Shield][🖇polar-img]][🖇polar]
28
+ [![Donate on Polar][🖇polar-img]][🖇polar]
30
29
  [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
31
30
  [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
32
31
 
33
- ## Alternatives
32
+ ## 🧐 Alternatives
34
33
 
35
34
  This gem has a very niche purpose, which is:
36
35
 
@@ -39,7 +38,7 @@ This gem has a very niche purpose, which is:
39
38
  3. allowing 100% test coverage of Ruby code, including the `Version` module.
40
39
 
41
40
  As proof in the pudding, this gem achieves 100% test coverage for lines and branches,
42
- all 77 and 2 of them, respectively; coverage enabled in part by patterns from this library.
41
+ all 117 and 4 of them, respectively; coverage enabled in part by patterns from this library.
43
42
  You can make it happen for your library too!
44
43
 
45
44
  If this isn't **precisely** your use case you may be better off looking at
@@ -48,7 +47,7 @@ gem from the Alchemists, or _[version_sorter](https://rubygems.org/gems/version_
48
47
 
49
48
  For more discussion about this [see issue #2](https://gitlab.com/oauth-xx/version_gem/-/issues/2)
50
49
 
51
- ## Still here?
50
+ ## 🚀 Still here?
52
51
 
53
52
  Give your next library an introspectable `Version` module without breaking your Gemspec.
54
53
 
@@ -66,23 +65,23 @@ This library was extracted from the gem _[oauth2](https://gitlab.com/oauth-xx/oa
66
65
 
67
66
  This gem has no runtime dependencies.
68
67
 
69
- ## Info you can shake a stick at
68
+ ## 💡 Info you can shake a stick at
70
69
 
71
70
  | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
72
71
  |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
73
- | 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] |
72
+ | 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-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
74
73
  | 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] |
75
74
  | 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] |
76
- | 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] |
75
+ | Works with MRI Ruby 2 | [![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] |
77
76
  | 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] |
78
77
  | 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] |
79
- | 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] |
78
+ | 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] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] |
80
79
  | 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] |
81
80
  | 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! |
82
81
  | 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] |
83
- | `...` 💖 | [![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] |
82
+ | `...` 💖 | [![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] |
84
83
 
85
- ## Installation
84
+ ## Installation
86
85
 
87
86
  Install the gem and add to the application's Gemfile by executing:
88
87
 
@@ -92,7 +91,37 @@ If bundler is not being used to manage dependencies, install the gem by executin
92
91
 
93
92
  $ gem install version_gem
94
93
 
95
- ## Usage
94
+ ### 🔒 Secure Installation
95
+
96
+ `version_gem` is cryptographically signed, and with verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
97
+ [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
98
+ by following the instructions below.
99
+
100
+ Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
101
+
102
+ ```shell
103
+ gem cert --add <(curl -Ls https://raw.github.com/oauth-xx/version_gem/main/certs/pboling.pem)
104
+ ```
105
+
106
+ You only need to do that once. Then proceed to install with:
107
+
108
+ ```shell
109
+ gem install version_gem -P HighSecurity
110
+ ```
111
+
112
+ The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
113
+
114
+ If you want to up your security game full-time:
115
+
116
+ ```shell
117
+ bundle config set --global trust-policy MediumSecurity
118
+ ```
119
+
120
+ `MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
121
+
122
+ NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
123
+
124
+ ## 🔧 Basic Usage
96
125
 
97
126
  In the standard `bundle gem my_lib` code you get the following in `lib/my_lib/version.rb`:
98
127
 
@@ -162,7 +191,96 @@ end
162
191
 
163
192
  Your `version.rb` file now abides the Ruby convention of directory / path matching the namespace / class!
164
193
 
165
- ### Zietwerk
194
+ ## Epoch Usage (Epoch Semantic Versioning, as of version 1.1.7)
195
+
196
+ In the standard `bundle gem my_lib` code you get the following in `lib/my_lib/version.rb`:
197
+
198
+ ```ruby
199
+ module MyLib
200
+ VERSION = "0.1.0"
201
+ end
202
+ ```
203
+
204
+ Change it to a nested `Version` namespace (the one implied by the path => namespace convention):
205
+
206
+ ```ruby
207
+ module MyLib
208
+ module Version
209
+ VERSION = "0.1.0"
210
+ end
211
+ end
212
+ ```
213
+
214
+ The Epoch and Major versions are derived from the formula:
215
+
216
+ ```
217
+ {EPOCH * 1000 + MAJOR}.MINOR.PATCH
218
+ ```
219
+
220
+ This will start your library with the following version segments:
221
+
222
+ * `epoch = 0`
223
+ * `major = 0`
224
+ * `minor = 1`
225
+ * `patch = 0`
226
+ * `pre = nil`
227
+
228
+ And the segments are defined as:
229
+
230
+ ```
231
+ EPOCH: Increment when you make significant or groundbreaking changes.
232
+ MAJOR: Increment when you make minor incompatible API changes.
233
+ MINOR: Increment when you add functionality in a backwards-compatible manner.
234
+ PATCH: Increment when you make backwards-compatible bug fixes.
235
+ ```
236
+
237
+ Therefore, if you set your version number to:
238
+
239
+ ```ruby
240
+ VERSION = "27016.42.86-pre.7"
241
+ ```
242
+
243
+ You will get the following version segments:
244
+
245
+ ```
246
+ {
247
+ epoch: 27,
248
+ major: 16,
249
+ minor: 42,
250
+ patch: 86,
251
+ pre: "pre-7",
252
+ }
253
+ ```
254
+
255
+ Now add the following near the top of the file the manages requiring external libraries.
256
+ Using the same example of `bundle gem my_lib`, this would be `lib/my_lib.rb`.
257
+
258
+ ```ruby
259
+ require "version_gem"
260
+ ```
261
+
262
+ Then, add the following wherever you want in the same file (recommend the bottom).
263
+
264
+ ```ruby
265
+ MyLib::Version.class_eval do
266
+ extend VersionGem::Epoch
267
+ end
268
+ ```
269
+
270
+ And now you have some version introspection methods available:
271
+
272
+ ```ruby
273
+ MyLib::Version.to_s # => "1024.3.8"
274
+ MyLib::Version.epoch # => 1
275
+ MyLib::Version.major # => 24
276
+ MyLib::Version.minor # => 3
277
+ MyLib::Version.patch # => 8
278
+ MyLib::Version.pre # => ""
279
+ MyLib::Version.to_a # => [1, 24, 3, 8]
280
+ MyLib::Version.to_h # => { epoch: 1, major: 24, minor: 3, patch: 8, pre: "" }
281
+ ```
282
+
283
+ ### Usage with Zeitwerk
166
284
 
167
285
  The pattern of `version.rb` breaking the ruby convention of directory / path matching the namespace / class
168
286
  is so entrenched that the `zeitwerk` library has a special carve-out for it. 🥺
@@ -260,9 +378,11 @@ RSpec.describe(MyLib::Version) do
260
378
  expect(described_class).to(have_version_as_string)
261
379
  expect(described_class.to_s).to(be_a(String))
262
380
  expect(described_class).to(have_major_as_integer)
381
+ expect(described_class).to(have_epoch_as_integer)
263
382
  expect(described_class).to(have_minor_as_integer)
264
383
  expect(described_class).to(have_patch_as_integer)
265
384
  expect(described_class).to(have_pre_as_nil_or_string)
385
+ # This would be %i[epoch major minor patch pre] for epoch version schemes
266
386
  expect(described_class.to_h.keys).to(match_array(%i[major minor patch pre]))
267
387
  expect(described_class.to_a).to(be_a(Array))
268
388
  end
@@ -312,11 +432,13 @@ Also see GitLab Contributors: [https://gitlab.com/oauth-xx/version_gem/-/graphs/
312
432
 
313
433
  ## 📌 Versioning
314
434
 
315
- This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
435
+ This Library adheres to [![Epoch Semantic Versioning][📌semver-img]][📌semver].
316
436
  Violations of this scheme should be reported as bugs.
317
437
  Specifically, if a minor or patch version is released that breaks backward compatibility,
318
438
  a new version should be immediately released that restores compatibility.
319
- Breaking changes to the public API will only be introduced with new major versions.
439
+ Breaking changes to the public API, including dropping a supported platform (i.e. minor version of Ruby),
440
+ will only be introduced with new major versions.
441
+ Epoch will only be bumped if there are dramatic changes, and that is not expected to happen ever.
320
442
 
321
443
  ### 📌 Is "Platform Support" part of the public API?
322
444
 
@@ -328,7 +450,7 @@ It is obvious to many, but not all, and since the spec is silent, the bike shedd
328
450
 
329
451
  > dropping support for a platform is both obviously and objectively a breaking change
330
452
 
331
- - Jordan Harband (@ljharb) [in SemVer issue 716][📌semver-breaking]
453
+ - Jordan Harband (@ljharb, maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
332
454
 
333
455
  To get a better understanding of how SemVer is intended to work over a project's lifetime,
334
456
  read this article from the creator of SemVer:
@@ -395,14 +517,18 @@ or one of the others at the head of this README.
395
517
  [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
396
518
  [💖🐘ruby-mast]: https://ruby.social/@galtzo
397
519
  [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=flat&logo=mastodon&label=Ruby%20%40galtzo
398
- [💖🦋bluesky]: https://galtzo.bsky.social
399
- [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.bsky.social-0285FF?style=flat&logo=bluesky&logoColor=white
520
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
521
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
400
522
  [💖🌳linktree]: https://linktr.ee/galtzo
401
523
  [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
402
524
  [💖💁🏼‍♂️devto]: https://dev.to/galtzo
403
525
  [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
404
526
  [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
405
527
  [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
528
+ [💖🧊berg]: https://codeberg.org/pboling
529
+ [💖🐙hub]: https://github.org/pboling
530
+ [💖🛖hut]: https://sr.ht/~galtzo/
531
+ [💖🧪lab]: https://gitlab.com/pboling
406
532
  [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
407
533
  [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
408
534
  [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
@@ -426,10 +552,10 @@ or one of the others at the head of this README.
426
552
  [👽oss-helpi]: https://www.codetriage.com/oauth-xx/version_gem/badges/users.svg
427
553
  [👽version]: https://rubygems.org/gems/version_gem
428
554
  [👽versioni]: https://img.shields.io/gem/v/version_gem.svg
429
- [🔑cc-mnt]: https://codeclimate.com/github/oauth-xx/version_gem/maintainability
430
- [🔑cc-mnti♻️]: https://api.codeclimate.com/v1/badges/e26c543320ca0d14e871/maintainability
431
- [🔑cc-cov]: https://codeclimate.com/github/oauth-xx/version_gem/test_coverage
432
- [🔑cc-covi♻️]: https://api.codeclimate.com/v1/badges/e26c543320ca0d14e871/test_coverage
555
+ [🔑cc-mnt]: https://qlty.sh/gh/oauth-xx/projects/version_gem
556
+ [🔑cc-mnti♻️]: https://qlty.sh/badges/19404e90-9168-451a-8dac-882382cb768d/maintainability.svg
557
+ [🔑cc-cov]: https://qlty.sh/gh/oauth-xx/projects/version_gem
558
+ [🔑cc-covi♻️]: https://qlty.sh/badges/19404e90-9168-451a-8dac-882382cb768d/test_coverage.svg
433
559
  [🔑codecov]: https://codecov.io/gh/oauth-xx/version_gem
434
560
  [🔑codecovi♻️]: https://codecov.io/gh/oauth-xx/version_gem/branch/main/graph/badge.svg?token=cc6UdZCpAL
435
561
  [🔑coveralls]: https://coveralls.io/github/oauth-xx/version_gem?branch=main
@@ -452,25 +578,25 @@ or one of the others at the head of this README.
452
578
  [🚎6-s-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/supported.yml/badge.svg
453
579
  [🚎7-us-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/unsupported.yml
454
580
  [🚎7-us-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/unsupported.yml/badge.svg
455
- [🚎8-ho-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/hoary.yml
456
- [🚎8-ho-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/hoary.yml/badge.svg
457
581
  [🚎9-t-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/truffle.yml
458
582
  [🚎9-t-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/truffle.yml/badge.svg
459
583
  [🚎10-j-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/jruby.yml
460
584
  [🚎10-j-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/jruby.yml/badge.svg
461
585
  [🚎11-c-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/current.yml
462
586
  [🚎11-c-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/current.yml/badge.svg
463
- [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
587
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay
464
588
  [⛳liberapay]: https://liberapay.com/pboling/donate
465
589
  [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
466
590
  [🖇sponsor]: https://github.com/sponsors/pboling
467
- [🖇polar-img]: https://polar.sh/embed/seeks-funding-shield.svg?org=pboling
591
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-yellow.svg
468
592
  [🖇polar]: https://polar.sh/pboling
469
- [🖇kofi-img]: https://img.shields.io/badge/buy_me_coffee-donate-yellow.svg
593
+ [🖇kofi-img]: https://img.shields.io/badge/a_more_different_coffee-✓-yellow.svg
470
594
  [🖇kofi]: https://ko-fi.com/O5O86SNP4
471
595
  [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-yellow.svg
472
596
  [🖇patreon]: https://patreon.com/galtzo
473
- [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
597
+ [🖇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
598
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
599
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-yellow.svg?style=flat
474
600
  [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
475
601
  [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
476
602
  [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
@@ -490,6 +616,7 @@ or one of the others at the head of this README.
490
616
  [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1-FBE742?style=for-the-badge&logo=ruby&logoColor=red
491
617
  [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
492
618
  [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
619
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
493
620
  [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
494
621
  [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
495
622
  [🤝issues]: https://github.com/oauth-xx/version_gem/issues
@@ -503,15 +630,17 @@ or one of the others at the head of this README.
503
630
  [🪇conduct]: CODE_OF_CONDUCT.md
504
631
  [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-4baaaa.svg
505
632
  [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
506
- [📌semver]: https://semver.org/spec/v2.0.0.html
507
- [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
633
+ [📌semver]: https://antfu.me/posts/epoch-semver
634
+ [📌semver-img]: https://img.shields.io/badge/epoch-semver-FFDD67.svg?style=flat
508
635
  [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
509
636
  [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
510
637
  [📌changelog]: CHANGELOG.md
511
638
  [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
512
639
  [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
640
+ [📌gitmoji]:https://gitmoji.dev
641
+ [📌gitmoji-img]:https://img.shields.io/badge/gitmoji-%20😜%20😍-FFDD67.svg?style=flat-square
513
642
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
514
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.077-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
643
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.117-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
515
644
  [🔐security]: SECURITY.md
516
645
  [🔐security-img]: https://img.shields.io/badge/security-policy-brightgreen.svg?style=flat
517
646
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -522,6 +651,5 @@ or one of the others at the head of this README.
522
651
  [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-brightgreen.svg?style=flat
523
652
  [🚎yard-current]: http://rubydoc.info/gems/version_gem
524
653
  [🚎yard-head]: https://rubydoc.info/github/oauth-xx/version_gem/main
525
- [🖇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
526
- [🖇buyme]: https://www.buymeacoffee.com/pboling
527
- [🖇buyme-small-img]: https://img.shields.io/badge/Buy--Me--A--Coffee-✓-brightgreen.svg?style=flat
654
+ [💎stone_checksums]: https://github.com/pboling/stone_checksums
655
+ [💎SHA_checksums]: https://gitlab.com/oauth-xx/version_gem/-/tree/main/checksums
data/SECURITY.md CHANGED
File without changes
File without changes
File without changes
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "error"
4
+ require_relative "api"
5
+
6
+ module VersionGem
7
+ # Support for Epoch Semantic Versioning
8
+ # See: https://antfu.me/posts/epoch-semver
9
+ module Epoch
10
+ EPOCH_SIZE = 1_000
11
+
12
+ class << self
13
+ def extended(base)
14
+ raise Error, "VERSION must be defined before 'extend #{name}'" unless defined?(base::VERSION)
15
+
16
+ base.extend(Api)
17
+ base.extend(OverloadApiForEpoch)
18
+ end
19
+ end
20
+
21
+ # Tweak the basic API so it will support Epoch Semantic Versioning
22
+ module OverloadApiForEpoch
23
+ # *** OVERLOAD METHODS FROM API ***
24
+ #
25
+ # The epoch version
26
+ #
27
+ # @return [Integer]
28
+ def epoch
29
+ @epoch ||= _major / EPOCH_SIZE
30
+ end
31
+
32
+ # The major version
33
+ #
34
+ # @return [Integer]
35
+ def major
36
+ @major ||= _major % EPOCH_SIZE
37
+ end
38
+
39
+ # The version number as a hash
40
+ #
41
+ # @return [Hash]
42
+ def to_h
43
+ @to_h ||= {
44
+ epoch: epoch,
45
+ major: major,
46
+ minor: minor,
47
+ patch: patch,
48
+ pre: pre,
49
+ }
50
+ end
51
+
52
+ # NOTE: This is not the same as _to_a, which returns an array of strings
53
+ #
54
+ # The version number as an array of cast values
55
+ # where epoch and major are derived from a single string:
56
+ # EPOCH * 1000 + MAJOR
57
+ #
58
+ # @return [Array<[Integer, String, NilClass]>]
59
+ def to_a
60
+ @to_a ||= [epoch, major, minor, patch, pre]
61
+ end
62
+
63
+ private
64
+
65
+ def _major
66
+ @_major ||= _to_a[0].to_i
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module VersionGem
4
+ # Errors raised by VersionGem will be of this class
4
5
  class Error < RuntimeError; end
5
6
  end
@@ -12,6 +12,12 @@ RSpec::Matchers.define(:have_version_as_string) do
12
12
  end
13
13
  end
14
14
 
15
+ RSpec::Matchers.define(:have_epoch_as_integer) do
16
+ match do |version_mod|
17
+ version_mod.epoch.is_a?(Integer)
18
+ end
19
+ end
20
+
15
21
  RSpec::Matchers.define(:have_major_as_integer) do
16
22
  match do |version_mod|
17
23
  version_mod.major.is_a?(Integer)
@@ -52,3 +58,22 @@ RSpec.shared_examples_for("a Version module") do |version_mod|
52
58
  end
53
59
  end
54
60
  end
61
+
62
+ # This one is more Epoch ;)
63
+ RSpec.shared_examples_for("an Epoch Version module") do |version_mod|
64
+ it "is introspectable" do
65
+ aggregate_failures "introspectable api" do
66
+ expect(version_mod).is_a?(Module)
67
+ expect(version_mod).to(have_version_constant)
68
+ expect(version_mod).to(have_version_as_string)
69
+ expect(version_mod.to_s).to(be_a(String))
70
+ expect(version_mod).to(have_epoch_as_integer)
71
+ expect(version_mod).to(have_major_as_integer)
72
+ expect(version_mod).to(have_minor_as_integer)
73
+ expect(version_mod).to(have_patch_as_integer)
74
+ expect(version_mod).to(have_pre_as_nil_or_string)
75
+ expect(version_mod.to_h.keys).to(match_array(%i[epoch major minor patch pre]))
76
+ expect(version_mod.to_a).to(be_a(Array))
77
+ end
78
+ end
79
+ end
@@ -5,14 +5,17 @@ module VersionGem
5
5
  module Ruby
6
6
  RUBY_VER = ::Gem::Version.new(RUBY_VERSION)
7
7
 
8
+ # Check if the current Ruby version is greater than or equal to the given version
8
9
  def gte_minimum_version?(version, engine = "ruby")
9
10
  RUBY_VER >= ::Gem::Version.new(version) && ::RUBY_ENGINE == engine
10
11
  end
11
12
  module_function :gte_minimum_version?
12
13
 
14
+ # Check if the current Ruby version (MAJOR.MINOR) is equal to the given version
13
15
  def actual_minor_version?(major, minor, engine = "ruby")
14
- major.to_i == RUBY_VER.segments[0] &&
15
- minor.to_i == RUBY_VER.segments[1] &&
16
+ segs = RUBY_VER.segments
17
+ major.to_i == segs[0] &&
18
+ minor.to_i == segs[1] &&
16
19
  ::RUBY_ENGINE == engine
17
20
  end
18
21
  module_function :actual_minor_version?
@@ -2,11 +2,13 @@
2
2
 
3
3
  module VersionGem
4
4
  module Version
5
- VERSION = "1.1.6"
5
+ VERSION = "1.1.8"
6
6
  # This would work in this gem, but not in external libraries,
7
7
  # because version files are loaded in Gemspecs before bundler
8
8
  # has a chance to load dependencies.
9
9
  # Instead, see lib/version_gem.rb for a solution that will work everywhere
10
10
  # extend VersionGem::Basic
11
+ # or
12
+ # extend VersionGem::Epoch
11
13
  end
12
14
  end
data/lib/version_gem.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "version_gem/version"
4
4
  require_relative "version_gem/basic"
5
+ require_relative "version_gem/epoch"
5
6
 
6
7
  # Namespace of this library
7
8
  module VersionGem
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: version_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
@@ -11,31 +11,31 @@ cert_chain:
11
11
  -----BEGIN CERTIFICATE-----
12
12
  MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
13
13
  ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
14
- A2NvbTAeFw0yNDA5MjAwODU4NDJaFw0yNTA5MjAwODU4NDJaMEMxFTATBgNVBAMM
14
+ A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
15
15
  DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
16
- LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAjrxsKObI
17
- rFQjBpzvVfqnT6JlF8/pkpgEEjFh7ex3zIerfuHzZvSrx+sRDGxQ8koWWG0Wjx8s
18
- wkBZ5dIqvl0g3sWP5asa28u/09opxkQTC1Ao77iYxcBcwoCe/Dpf1m4Q/m6oH0kL
19
- 2AZVNJQL3UkqAcLS0tsj/s/jAKnVlsaZZE5gQiIIi8HtkvSsajtx+Cq2AxDvcWvV
20
- /CliD+pmzYkTjvjwGm8yeyFGGGgrisJMryiZdZlkTwrQSjCzudIKbLeuG8Se4JTD
21
- TAcT+rPubr27v1jwmtIjtiot3rf4nof7LHLb122a/0VR7cC7xPLnXw0Cq1BShvoq
22
- /GKRdSwMNinTOGkFTK1gKnjN+3iD4zyXU3XO3CXoTr+Ju8fXPN1x4tpOMgbv8dme
23
- WbcQMOH9ZjmA5w0bSVRL1c3NhRRpUzrKTNXBEvqOyWjUnintxWKj+cRXx+z+dUgI
24
- dL3kj68fcsiTgl75In3C485pnCMmq1eLuVoiy3jkLNOn2lHeLt9ZK63LAgMBAAGj
25
- fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRhfc+2UaVYd74p
26
- yJ1JclGiUYN8+jAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
16
+ LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
17
+ uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
18
+ LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
19
+ mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
20
+ coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
21
+ FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
22
+ yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
23
+ to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
24
+ qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
25
+ fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
26
+ HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
27
27
  A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
28
- ggGBAA4fLU2+mQ++jBhVM2IeyvQdw1nm+0thkH4Ldv8ZOBm5ZxCPGIMoYliDDzg4
29
- 4JDFxZR1wR4sdrz/K5tWtEkN23SKzopwbNb1NIQRSLQ7nOoc+4bkuz9xwKinmIvF
30
- D+5qsl2S27WLKFreMDtGoh0CREIMBUxU4rGTh0gtzmweGR+fnOShg4Jo0kxrjU5h
31
- uYk/uVE+bn/jOEGs43GvKXZLyshpBrZjQ+ArbvxDht5t35zbSxerbUxUPZUbXUCW
32
- tTyh38a9UYjAAHvnh6Y4Fi9wd4/pGNsektrzB3z/zlVj4YF2TMLX9XfNJWEGRGpO
33
- sSkLYdtEX1WQAmuZtActVW2cL3HdQaRbiv7VbfpA0eSk0ZdZHvBCl516ZZu10uX6
34
- 82W1mg6fuezdpeBOiXwrEbZSt/oGiF4V511F6nd55p0okwHc/6nS10F/3aKJ4gwC
35
- I5o+DRfXQHqKucx1ldFHvI2rE/kSCWqGTHN2eyu1sqCPeOoIMxrltJhaejKPkxqj
36
- zaF9Og==
28
+ ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
29
+ wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
30
+ L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
31
+ GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
32
+ kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
33
+ QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
34
+ 0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
35
+ DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
36
+ L9nRqA==
37
37
  -----END CERTIFICATE-----
38
- date: 2025-02-24 00:00:00.000000000 Z
38
+ date: 2025-05-06 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rspec
@@ -116,6 +116,7 @@ files:
116
116
  - lib/version_gem.rb
117
117
  - lib/version_gem/api.rb
118
118
  - lib/version_gem/basic.rb
119
+ - lib/version_gem/epoch.rb
119
120
  - lib/version_gem/error.rb
120
121
  - lib/version_gem/rspec.rb
121
122
  - lib/version_gem/ruby.rb
@@ -124,11 +125,11 @@ homepage: https://gitlab.com/oauth-xx/version_gem
124
125
  licenses:
125
126
  - MIT
126
127
  metadata:
127
- homepage_uri: https://gitlab.com/oauth-xx/version_gem
128
- source_code_uri: https://gitlab.com/oauth-xx/version_gem/-/tree/v1.1.6
129
- changelog_uri: https://gitlab.com/oauth-xx/version_gem/-/blob/v1.1.6/CHANGELOG.md
128
+ homepage_uri: https://railsbling.com/tags/version_gem/
129
+ source_code_uri: https://gitlab.com/oauth-xx/version_gem/-/tree/v1.1.8
130
+ changelog_uri: https://gitlab.com/oauth-xx/version_gem/-/blob/v1.1.8/CHANGELOG.md
130
131
  bug_tracker_uri: https://gitlab.com/oauth-xx/version_gem/-/issues
131
- documentation_uri: https://www.rubydoc.info/gems/version_gem/1.1.6
132
+ documentation_uri: https://www.rubydoc.info/gems/version_gem/1.1.8
132
133
  wiki_uri: https://gitlab.com/oauth-xx/version_gem/-/wiki
133
134
  mailing_list_uri: https://groups.google.com/g/oauth-ruby
134
135
  funding_uri: https://liberapay.com/pboling
@@ -154,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
155
  - !ruby/object:Gem::Version
155
156
  version: '0'
156
157
  requirements: []
157
- rubygems_version: 3.6.4
158
+ rubygems_version: 3.6.8
158
159
  specification_version: 4
159
160
  summary: Enhance your VERSION! Sugar for Version modules.
160
161
  test_files: []
metadata.gz.sig CHANGED
Binary file