Skip to content

Commit 7cc60fd

Browse files
committed
Merge branch 'release/v1.1.8' into 'main'
Release v1.1.8 See merge request oauth-xx/version_gem!4
2 parents cbe965e + 4ad1e37 commit 7cc60fd

21 files changed

+196
-85
lines changed

.github/workflows/coverage.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,6 @@ jobs:
4949
bundler: latest
5050

5151
steps:
52-
- uses: amancevice/setup-code-climate@v2
53-
name: CodeClimate Install
54-
if: ${{ github.event_name != 'pull_request' }}
55-
with:
56-
cc_test_reporter_id: ${{ secrets.CC_TEST_REPORTER_ID }}
57-
5852
- name: Checkout
5953
uses: actions/checkout@v4
6054

.gitlab-ci.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# You can override the included template(s) by including variable overrides
2+
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
3+
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
4+
# Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings
5+
# Container Scanning customization: https://docs.gitlab.com/ee/user/application_security/container_scanning/#customizing-the-container-scanning-settings
6+
# Note that environment variables can be set in several places
7+
# See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
8+
#stages:
9+
# - test
10+
#sast:
11+
# stage: test
12+
#include:
13+
# - template: Security/SAST.gitlab-ci.yml
14+
15+
variables:
16+
K_SOUP_COV_DEBUG: true
17+
K_SOUP_COV_DO: true
18+
K_SOUP_COV_HARD: true
19+
K_SOUP_COV_MIN_BRANCH: 100
20+
K_SOUP_COV_MIN_LINE: 100
21+
K_SOUP_COV_VERBOSE: true
22+
K_SOUP_COV_FORMATTERS: "html,rcov,lcov,json,tty"
23+
K_SOUP_COV_MULTI_FORMATTERS: true
24+
K_SOUP_COV_COMMAND_NAME: "RSpec Coverage"
25+
26+
default:
27+
image: ruby:3.4.3
28+
29+
before_script:
30+
- gem update --silent --system
31+
- mkdir -p vendor/bundle
32+
- bundle config set path 'vendor/bundle'
33+
- chmod +t -R vendor/bundle
34+
- chmod o-w -R vendor/bundle
35+
- bundle install --jobs 4 --retry 3
36+
37+
run_tests:
38+
script:
39+
- bundle exec rake

Appraisal.root.gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ source "https://rubygems.org"
66

77
# Appraisal Root Gemfile is for running appraisal to generate the Appraisal Gemfiles
88
# in gemfiles/*gemfile.
9-
# On CI, we use it for the Appraisal-based builds.
10-
# We do not load the standard Gemfile, as it is tailored for local development.
9+
# On GHA CI, we use it for the Appraisal-based builds.
10+
# We do not load the standard Gemfile, as it is tailored for local development & GitLab CI.
1111

1212
gemspec
1313

CHANGELOG.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,24 @@ Please file a bug if you notice a violation of semantic versioning.
2222
### Fixed
2323
### Removed
2424

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+
2537
## [1.1.7] 2025-04-15 ([tag][1.1.7t])
2638
- Line Coverage: 100.0% (117 / 117)
2739
- Branch Coverage: 100.0% (4 / 4)
28-
- 76.92% documented
40+
- 76.92% documented
2941
### Added
30-
- Support for Epoch Semantic Versioning
42+
- Support for Epoch Semantic Versioning (@pboling)
3143
- `extend VersionGem::Epoch` in your library's `MyLib::Version` module
3244
- Support for JRuby 10 (@pboling)
3345
- More documentation (@pboling)
@@ -130,7 +142,9 @@ Please file a bug if you notice a violation of semantic versioning.
130142
### Added
131143
- Initial release, with basic version parsing API (@pboling)
132144

133-
[Unreleased]: https://gitlab.com/oauth-xx/version_gem/-/compare/v1.1.7...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
134148
[1.1.7]: https://gitlab.com/oauth-xx/version_gem/-/compare/v1.1.6...v1.1.7
135149
[1.1.7t]: https://gitlab.com/oauth-xx/oauth2/-/tags/v1.1.7
136150
[1.1.6]: https://gitlab.com/oauth-xx/version_gem/-/compare/v1.1.5...v1.1.6

CITATION.cff

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
cff-version: 1.2.0
2+
title: VersionGem
3+
message: >-
4+
If you use this work and you want to cite it,
5+
then you can use the metadata from this file.
6+
type: software
7+
authors:
8+
- given-names: Peter Hurn
9+
family-names: Boling
10+
11+
affiliation: railsbling.com
12+
orcid: 'https://orcid.org/0009-0008-8519-441X'
13+
identifiers:
14+
- type: url
15+
value: 'https://github.com/oauth-xx/version_gem/'
16+
description: VersionGem
17+
repository-code: 'https://github.com/oauth-xx/version_gem/'
18+
abstract: >-
19+
VersionGem
20+
license: See license file

CONTRIBUTING.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,14 @@ Also see GitLab Contributors: [https://gitlab.com/oauth-xx/version_gem/-/graphs/
8484

8585
### One-time, Per-maintainer, Setup
8686

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.
9091
See: [RubyGems Security Guide][🔒️rubygems-security-guide]
9192

93+
NOTE: To build without signing the gem you must set `SKIP_GEM_SIGNING` to some value in your environment.
94+
9295
### To release a new version:
9396

9497
1. Run `bin/setup && bin/rake` as a tests, coverage, & linting sanity check

Gemfile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
66
git_source(:gitlab) { |repo_name| "https://gitlab.com/#{repo_name}" }
77

88
#### IMPORTANT #######################################################
9-
# Gemfile is for local development ONLY; Gemfile is NOT loaded in CI #
9+
# Gemfile is for local development and GitLab CI #
10+
# Gemfile is NOT loaded in GitHub Actions CI #
1011
####################################################### IMPORTANT ####
1112

1213
# For Ruby version specific dependencies
@@ -27,8 +28,6 @@ platform :mri do
2728

2829
# Dev Console - Binding.pry - Irb replacement
2930
gem "pry", "~> 0.14" # ruby >= 2.0
30-
31-
gem "reek", "~> 6.4"
3231
end
3332

3433
# Security Audit

Gemfile.lock

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,22 @@ GIT
88
rake (>= 10)
99
thor (>= 0.14)
1010

11+
GIT
12+
remote: https://github.com/pboling/yard-junk
13+
revision: 54ccebabbfa9a9cd44d0b991687ebbfd22c32b55
14+
branch: next
15+
specs:
16+
yard-junk (0.0.10)
17+
backports (>= 3.18)
18+
benchmark
19+
ostruct
20+
rainbow
21+
yard
22+
1123
PATH
1224
remote: .
1325
specs:
14-
version_gem (1.1.7)
26+
version_gem (1.1.8)
1527

1628
GEM
1729
remote: https://rubygems.org/
@@ -123,11 +135,11 @@ GEM
123135
rspec-expectations (3.13.4)
124136
diff-lcs (>= 1.2.0, < 2.0)
125137
rspec-support (~> 3.13.0)
126-
rspec-mocks (3.13.3)
138+
rspec-mocks (3.13.4)
127139
diff-lcs (>= 1.2.0, < 2.0)
128140
rspec-support (~> 3.13.0)
129141
rspec-support (3.13.3)
130-
rubocop (1.75.4)
142+
rubocop (1.75.5)
131143
json (~> 2.3)
132144
language_server-protocol (~> 3.17.0.2)
133145
lint_roller (~> 1.1.0)
@@ -224,11 +236,6 @@ GEM
224236
unicode-emoji (~> 4.0, >= 4.0.4)
225237
unicode-emoji (4.0.4)
226238
yard (0.9.37)
227-
yard-junk (0.0.10)
228-
backports (>= 3.18)
229-
ostruct
230-
rainbow
231-
yard
232239
zeitwerk (2.7.2)
233240

234241
PLATFORMS
@@ -252,14 +259,15 @@ DEPENDENCIES
252259
reek (~> 6.4)
253260
rspec (~> 3.13)
254261
rspec-block_is_expected (~> 1.0)
262+
rubocop (~> 1.73, >= 1.73.2)
255263
rubocop-lts (~> 8.1, >= 8.1.1)
256264
rubocop-packaging (~> 0.5, >= 0.5.2)
257265
rubocop-rspec (~> 3.2)
258-
standard (>= 1.35.1, != 1.42.0, != 1.41.1)
266+
standard (~> 1.47)
259267
stone_checksums (~> 1.0)
260268
version_gem!
261269
yard (~> 0.9, >= 0.9.37)
262-
yard-junk (~> 0.0, >= 0.0.10)
270+
yard-junk (~> 0.0, >= 0.0.10)!
263271

264272
BUNDLED WITH
265273
2.6.8

README.md

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# VersionGem
1+
# 🔖 VersionGem
22

33
[![Version][👽versioni]][👽version]
44
[![License: MIT][📄license-img]][📄license-ref]
@@ -29,7 +29,7 @@
2929
[![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
3030
[![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
3131

32-
## Alternatives
32+
## 🧐 Alternatives
3333

3434
This gem has a very niche purpose, which is:
3535

@@ -47,7 +47,7 @@ gem from the Alchemists, or _[version_sorter](https://rubygems.org/gems/version_
4747

4848
For more discussion about this [see issue #2](https://gitlab.com/oauth-xx/version_gem/-/issues/2)
4949

50-
## Still here?
50+
## 🚀 Still here?
5151

5252
Give your next library an introspectable `Version` module without breaking your Gemspec.
5353

@@ -65,7 +65,7 @@ This library was extracted from the gem _[oauth2](https://gitlab.com/oauth-xx/oa
6565

6666
This gem has no runtime dependencies.
6767

68-
## Info you can shake a stick at
68+
## 💡 Info you can shake a stick at
6969

7070
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
7171
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -79,9 +79,9 @@ This gem has no runtime dependencies.
7979
| 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] |
8080
| 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! |
8181
| 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] |
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] |
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] |
8383

84-
## Installation
84+
## Installation
8585

8686
Install the gem and add to the application's Gemfile by executing:
8787

@@ -91,7 +91,36 @@ If bundler is not being used to manage dependencies, install the gem by executin
9191

9292
$ gem install version_gem
9393

94-
## Basic Usage
94+
### 🔒 Secure Installation
95+
96+
`version_gem` is cryptographically signed. Be sure the gem you install hasn’t been tampered with
97+
by following the instructions below.
98+
99+
Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
100+
101+
```shell
102+
gem cert --add <(curl -Ls https://raw.github.com/oauth-xx/version_gem/master/certs/pboling.pem)
103+
```
104+
105+
You only need to do that once. Then proceed to install with:
106+
107+
```shell
108+
gem install version_gem -P MediumSecurity
109+
```
110+
111+
The `MediumSecurity` trust profile will verify signed gems, but allow the installation of unsigned dependencies.
112+
113+
This is necessary because not all of `version_gem`’s dependencies are signed, so we cannot use `HighSecurity`.
114+
115+
If you want to up your security game full-time:
116+
117+
```shell
118+
bundle config set --global trust-policy MediumSecurity
119+
```
120+
121+
NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
122+
123+
## 🔧 Basic Usage
95124

96125
In the standard `bundle gem my_lib` code you get the following in `lib/my_lib/version.rb`:
97126

@@ -250,7 +279,7 @@ MyLib::Version.to_a # => [1, 24, 3, 8]
250279
MyLib::Version.to_h # => { epoch: 1, major: 24, minor: 3, patch: 8, pre: "" }
251280
```
252281

253-
## Usage with Zeitwerk
282+
### Usage with Zeitwerk
254283

255284
The pattern of `version.rb` breaking the ruby convention of directory / path matching the namespace / class
256285
is so entrenched that the `zeitwerk` library has a special carve-out for it. 🥺
@@ -420,7 +449,7 @@ It is obvious to many, but not all, and since the spec is silent, the bike shedd
420449

421450
> dropping support for a platform is both obviously and objectively a breaking change
422451
423-
- Jordan Harband (@ljharb) [in SemVer issue 716][📌semver-breaking]
452+
- Jordan Harband (@ljharb, maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
424453

425454
To get a better understanding of how SemVer is intended to work over a project's lifetime,
426455
read this article from the creator of SemVer:
@@ -487,14 +516,18 @@ or one of the others at the head of this README.
487516
[💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
488517
[💖🐘ruby-mast]: https://ruby.social/@galtzo
489518
[💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=flat&logo=mastodon&label=Ruby%20%40galtzo
490-
[💖🦋bluesky]: https://galtzo.bsky.social
491-
[💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.bsky.social-0285FF?style=flat&logo=bluesky&logoColor=white
519+
[💖🦋bluesky]: https://bsky.app/profile/galtzo.com
520+
[💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
492521
[💖🌳linktree]: https://linktr.ee/galtzo
493522
[💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
494523
[💖💁🏼‍♂️devto]: https://dev.to/galtzo
495524
[💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
496525
[💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
497526
[💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
527+
[💖🧊berg]: https://codeberg.org/pboling
528+
[💖🐙hub]: https://github.org/pboling
529+
[💖🛖hut]: https://sr.ht/~galtzo/
530+
[💖🧪lab]: https://gitlab.com/pboling
498531
[👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
499532
[👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
500533
[👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
@@ -550,7 +583,7 @@ or one of the others at the head of this README.
550583
[🚎10-j-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/jruby.yml/badge.svg
551584
[🚎11-c-wf]: https://github.com/oauth-xx/version_gem/actions/workflows/current.yml
552585
[🚎11-c-wfi]: https://github.com/oauth-xx/version_gem/actions/workflows/current.yml/badge.svg
553-
[⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
586+
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay
554587
[⛳liberapay]: https://liberapay.com/pboling/donate
555588
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
556589
[🖇sponsor]: https://github.com/sponsors/pboling

REEK

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1 @@
1-
spec/helpers/faux.rb -- 1 warning:
2-
[14, 15]:DuplicateMethodCall: VersionGem::Faux#actual_minor_version? calls 'RUBY_VER.segments' 2 times [https://github.com/troessner/reek/blob/v6.5.0/docs/Duplicate-Method-Call.md]
3-
lib/version_gem/epoch.rb -- 1 warning:
4-
[21]:IrresponsibleModule: VersionGem::Epoch::OverloadApiForEpoch has no descriptive comment [https://github.com/troessner/reek/blob/v6.5.0/docs/Irresponsible-Module.md]
5-
lib/version_gem/error.rb -- 1 warning:
6-
[4]:IrresponsibleModule: VersionGem::Error has no descriptive comment [https://github.com/troessner/reek/blob/v6.5.0/docs/Irresponsible-Module.md]
7-
lib/version_gem/ruby.rb -- 1 warning:
8-
[14, 15]:DuplicateMethodCall: VersionGem::Ruby#actual_minor_version? calls 'RUBY_VER.segments' 2 times [https://github.com/troessner/reek/blob/v6.5.0/docs/Duplicate-Method-Call.md]
9-
4 total warnings
1+
0 total warnings

Rakefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ begin
4242

4343
RSpec::Core::RakeTask.new(:spec)
4444
# This takes the place of `coverage` task when running as CI=true
45-
defaults << "spec" if Kettle::Soup::Cover::IS_CI
45+
defaults << "spec" if !defined?(Kettle::Soup::Cover) || Kettle::Soup::Cover::IS_CI
4646
rescue LoadError
4747
desc("spec task stub")
4848
task(:spec) do

0 commit comments

Comments
 (0)