kettle-dev 1.1.35 → 1.1.37

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: 51bc097ab38c42c6442bc2dac30e0be5db8f4724babe58df0a3bc9380ca273d3
4
- data.tar.gz: f5fd0efc0784b8d8f47acc35bd0f73e4e250415bee2ecad5def2f0e80b7dd64b
3
+ metadata.gz: c9fad405b0585e4d0a4f5651683dca26a005520d41b8a17ffa36cc9ab41cdd45
4
+ data.tar.gz: c02e4989597f4b2635daf24215d608b3855c7223799acc2049fe26de47f5ab37
5
5
  SHA512:
6
- metadata.gz: 2b3be6f9f5d4fd90ef967550126eb8617e3b786892afb8cfc86cba56984278227246706e04203ea89b87f6828383556a933b47ae9995d28bd55313e1eb51380d
7
- data.tar.gz: 36f1c0a85c4b124020ece25999e85463365344c4ee60a856a5dcf3ce2e125014162ad7b725db8ebdaedab153ca210afb15d949e6de329079cae1b8c81a6d9585
6
+ metadata.gz: b7d4aad2935288d5e4a5c79613453c075c1b1896fc45b7a02db73f50c6fa7016f90a7d821720ec051962644d0b5b6a86dd85ed3c7b66541e5779ccfbbcd45766
7
+ data.tar.gz: 0de641cbe2fdf22fb4441dc7e92cf6deba7be4ac7fa31e35a3592afdcef6df76780ecd10c8ed0796de6a446c05bf15ca96ca4332ea0050dc2038c56b6b6d090e
checksums.yaml.gz.sig CHANGED
Binary file
data/.envrc CHANGED
@@ -21,8 +21,8 @@ export K_SOUP_COV_DO=true # Means you want code coverage
21
21
  export K_SOUP_COV_COMMAND_NAME="Test Coverage"
22
22
  # Available formats are html, xml, rcov, lcov, json, tty
23
23
  export K_SOUP_COV_FORMATTERS="html,xml,rcov,lcov,json,tty"
24
- export K_SOUP_COV_MIN_BRANCH=80 # Means you want to enforce X% branch coverage
25
- export K_SOUP_COV_MIN_LINE=96 # Means you want to enforce X% line coverage
24
+ export K_SOUP_COV_MIN_BRANCH=79 # Means you want to enforce X% branch coverage
25
+ export K_SOUP_COV_MIN_LINE=95 # Means you want to enforce X% line coverage
26
26
  export K_SOUP_COV_MIN_HARD=true # Means you want the build to fail if the coverage thresholds are not met
27
27
  export K_SOUP_COV_MULTI_FORMATTERS=true
28
28
  export K_SOUP_COV_OPEN_BIN= # Means don't try to open coverage results in browser
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  *.gem
5
5
 
6
6
  # Bundler
7
+ /vendor/bundle/
7
8
  /.bundle/
8
9
  /gemfiles/*.lock
9
10
  /gemfiles/.bundle/
data/Appraisals CHANGED
@@ -22,9 +22,9 @@
22
22
  appraise "unlocked_deps" do
23
23
  eval_gemfile "modular/coverage.gemfile"
24
24
  eval_gemfile "modular/documentation.gemfile"
25
- eval_gemfile "modular/style.gemfile"
26
25
  eval_gemfile "modular/optional.gemfile"
27
26
  eval_gemfile "modular/recording/r3/recording.gemfile"
27
+ eval_gemfile "modular/style.gemfile"
28
28
  eval_gemfile "modular/x_std_libs.gemfile"
29
29
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
30
30
  # eval_gemfile "modular/injected.gemfile"
@@ -33,9 +33,9 @@ end
33
33
  # Used for head (nightly) releases of ruby, truffleruby, and jruby.
34
34
  # Split into discrete appraisals if one of them needs a dependency locked discretely.
35
35
  appraise "head" do
36
+ gem "benchmark", "~> 0.4", ">= 0.4.1"
36
37
  # Why is cgi gem here? See: https://github.com/vcr/vcr/issues/1057
37
38
  gem "cgi", ">= 0.5"
38
- gem "benchmark", "~> 0.4", ">= 0.4.1"
39
39
  eval_gemfile "modular/recording/r3/recording.gemfile"
40
40
  eval_gemfile "modular/x_std_libs.gemfile"
41
41
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
data/Appraisals.example CHANGED
@@ -22,8 +22,8 @@
22
22
  appraise "unlocked_deps" do
23
23
  eval_gemfile "modular/coverage.gemfile"
24
24
  eval_gemfile "modular/documentation.gemfile"
25
- eval_gemfile "modular/style.gemfile"
26
25
  eval_gemfile "modular/optional.gemfile"
26
+ eval_gemfile "modular/style.gemfile"
27
27
  eval_gemfile "modular/x_std_libs.gemfile"
28
28
  end
29
29
 
data/CHANGELOG.md CHANGED
@@ -20,8 +20,14 @@ Please file a bug if you notice a violation of semantic versioning.
20
20
 
21
21
  ### Added
22
22
 
23
+ - kettle-release: improved --help
24
+ - improved documentation of kettle-release
25
+ - improved documentation of spec setup with kettle-test
26
+
23
27
  ### Changed
24
28
 
29
+ - upgrade to kettle-test v1.0.6
30
+
25
31
  ### Deprecated
26
32
 
27
33
  ### Removed
@@ -30,6 +36,38 @@ Please file a bug if you notice a violation of semantic versioning.
30
36
 
31
37
  ### Security
32
38
 
39
+ ## [1.1.37] - 2025-10-21
40
+
41
+ - TAG: [v1.1.37][1.1.37t]
42
+ - COVERAGE: 96.04% -- 3949/4112 lines in 26 files
43
+ - BRANCH COVERAGE: 80.80% -- 1633/2021 branches in 26 files
44
+ - 79.68% documented
45
+
46
+ ### Added
47
+
48
+ - kettle-release: improved --help
49
+ - improved documentation of kettle-release
50
+ - improved documentation of spec setup with kettle-test
51
+
52
+ ### Changed
53
+
54
+ - upgrade to kettle-test v1.0.6
55
+
56
+ ## [1.1.36] - 2025-10-20
57
+
58
+ - TAG: [v1.1.36][1.1.36t]
59
+ - COVERAGE: 96.04% -- 3949/4112 lines in 26 files
60
+ - BRANCH COVERAGE: 80.85% -- 1634/2021 branches in 26 files
61
+ - 79.68% documented
62
+
63
+ ### Added
64
+
65
+ - More documentation of RC situation
66
+
67
+ ### Fixed
68
+
69
+ - alphabetize dependencies
70
+
33
71
  ## [1.1.35] - 2025-10-20
34
72
 
35
73
  - TAG: [v1.1.35][1.1.35t]
@@ -1119,7 +1157,11 @@ Please file a bug if you notice a violation of semantic versioning.
1119
1157
  - Selecting will run the selected workflow via `act`
1120
1158
  - This may move to its own gem in the future.
1121
1159
 
1122
- [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.35...HEAD
1160
+ [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.37...HEAD
1161
+ [1.1.37]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.36...v1.1.37
1162
+ [1.1.37t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.37
1163
+ [1.1.36]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.35...v1.1.36
1164
+ [1.1.36t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.36
1123
1165
  [1.1.35]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.34...v1.1.35
1124
1166
  [1.1.35t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.35
1125
1167
  [1.1.34]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.33...v1.1.34
data/README.md CHANGED
@@ -1,17 +1,25 @@
1
- | 📍 NOTE |
2
- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
- | RubyGems.org [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
4
- | I'm in the process of adding warnings to gems because I [don't condone the theft][draper-theft] of the bundler and rubygems-update projects. |
5
- | If repos or publishing rights for my gems were similarly stolen, I'd hope others would stand up for me. |
6
- | Once publishing to [gem.coop][gem-coop] is available I will stop publishing to RubyGems.org, unless they make amends. |
7
- | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. This ["Technology for Humans" podcast episode][reinteractive-podcast] is the best summary I'm aware of. |
8
- | My (WIP) proposal for [bundler/gem scopes][gem-scopes]. My (WIP) proposal for a federated [gem server][gem-server]. |
9
-
1
+ | 📍 NOTE |
2
+ |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
+ | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
+ | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
+ | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
+ | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
7
+ | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
8
+ | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
9
+ | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
10
+ | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
11
+ | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
12
+ | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
13
+
14
+ [rubygems-org]: https://github.com/rubygems/
10
15
  [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
11
16
  [draper-takeover]: https://joel.drapper.me/p/ruby-central-takeover/
12
17
  [ellen-takeover]: https://pup-e.com/blog/goodbye-rubygems/
18
+ [simi-removed]: https://www.reddit.com/r/ruby/s/gOk42POCaV
19
+ [martin-removed]: https://bsky.app/profile/martinemde.com/post/3m3occezxxs2q
13
20
  [draper-lies]: https://joel.drapper.me/p/ruby-central-fact-check/
14
21
  [draper-theft]: https://joel.drapper.me/p/ruby-central/
22
+ [reinteractive]: https://reinteractive.com/ruby-on-rails
15
23
  [gem-coop]: https://gem.coop
16
24
  [gem-naming]: https://github.com/gem-coop/gem.coop/issues/12
17
25
  [martin-ann]: https://martinemde.com/2025/10/05/announcing-gem-coop.html
@@ -205,6 +213,21 @@ This gem integrates tightly with [kettle-test](https://github.com/kettle-rb/kett
205
213
 
206
214
  ```ruby
207
215
  require "kettle/test/rspec"
216
+
217
+ # ... any other config you need to do.
218
+
219
+ # NOTE: Gemfiles for older rubies (< 2.7) won't have kettle-soup-cover.
220
+ # The rescue LoadError handles that scenario.
221
+ begin
222
+ require "kettle-soup-cover"
223
+ require "simplecov" if Kettle::Soup::Cover::DO_COV # `.simplecov` is run here!
224
+ rescue LoadError => error
225
+ # check the error message, and re-raise if not what is expected
226
+ raise error unless error.message.include?("kettle")
227
+ end
228
+
229
+ # This gem (or app)
230
+ require "gem-under-test"
208
231
  ```
209
232
 
210
233
  ### Rakefile
@@ -449,24 +472,25 @@ What it does:
449
472
  - Exports `SOURCE_DATE_EPOCH`, builds (optionally signed), creates gem checksums, and runs `bundle exec rake release` (prompts for signing key + RubyGems MFA OTP as needed).
450
473
  - Options:
451
474
  - start_step map (skip directly to a phase):
452
- - 1: Ensure Bundler >= 2.7.0 and begin full flow
453
- - 2: Version detection + sanity checks + prompt to confirm version.rb and CHANGELOG.md
454
- - 3: Run bin/setup
455
- - 4: Run bin/rake (default task)
456
- - 5: Run appraisal:update when Appraisals exists (skip otherwise)
457
- - 6: Verify git user.name/email and commit release prep "🔖 Prepare release vX.Y.Z"
458
- - 7: Optionally run local CI with nektos/act before pushing (see K_RELEASE_LOCAL_CI, K_RELEASE_LOCAL_CI_WORKFLOW)
459
- - 8: Ensure trunk is up-to-date and reconcile with GitHub remote if needed
460
- - 9: Push current branch to configured remotes (or default), force-pushing on retry when needed
461
- - 10: Monitor CI after push (GitHub Actions and/or GitLab pipelines); progress bar; aborts on failure
462
- - 11: Merge feature branch into trunk and push
463
- - 12: Checkout trunk and pull latest
464
- - 13: Signing checks and guidance (abort when signing enabled but cert missing); respect SKIP_GEM_SIGNING
465
- - 14: Build gem (honors SKIP_GEM_SIGNING via env prefix)
466
- - 15: Release via `bundle exec rake release` (also creates git tag)
467
- - 16: Generate and validate gem checksums (bin/gem_checksums)
468
- - 17: Create GitHub release from CHANGELOG when GITHUB_TOKEN present
469
- - 18: Push git tags to remotes (to "all" remote only when present; otherwise to each remote)
475
+ 1. Verify Bundler >= 2.7 (always runs; start at 1 to do everything)
476
+ 2. Detect version; RubyGems sanity check; confirm CHANGELOG/version; sync copyright years; update badges/headers
477
+ 3. Run bin/setup
478
+ 4. Run bin/rake (default task)
479
+ 5. Run bin/rake appraisal:update if Appraisals present
480
+ 6. Ensure git user configured; commit release prep
481
+ 7. Optional local CI with `act` (controlled by K_RELEASE_LOCAL_CI)
482
+ 8. Ensure trunk in sync across remotes; rebase feature as needed
483
+ 9. Push current branch to remotes (or 'all' remote)
484
+ 10. Monitor CI after push; abort on failures
485
+ 11. Merge feature into trunk and push
486
+ 12. Checkout trunk and pull latest
487
+ 13. Gem signing checks/guidance (skip with SKIP_GEM_SIGNING=true)
488
+ 14. Build gem (bundle exec rake build)
489
+ 15. Release gem (bundle exec rake release)
490
+ 16. Generate and validate checksums (bin/gem_checksums)
491
+ 17. Push checksum commit
492
+ 18. Create GitHub Release (requires GITHUB_TOKEN)
493
+ 19. Push tags to remotes (final)
470
494
  - Examples:
471
495
  - After intermittent CI failure, restart from monitoring: `bundle exec kettle-release start_step=10`
472
496
  - Tips:
data/README.md.example CHANGED
@@ -1,17 +1,25 @@
1
- | 📍 NOTE |
2
- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
- | RubyGems.org [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
4
- | I'm in the process of adding warnings to gems because I [don't condone the theft][draper-theft] of the bundler and rubygems-update projects. |
5
- | If repos or publishing rights for my gems were similarly stolen, I'd hope others would stand up for me. |
6
- | Once publishing to [gem.coop][gem-coop] is available I will stop publishing to RubyGems.org, unless they make amends. |
7
- | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. This ["Technology for Humans" podcast episode][reinteractive-podcast] is the best summary I'm aware of. |
8
- | My (WIP) proposal for [bundler/gem scopes][gem-scopes]. My (WIP) proposal for a federated [gem server][gem-server]. |
9
-
1
+ | 📍 NOTE |
2
+ |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
+ | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
+ | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
+ | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
+ | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
7
+ | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
8
+ | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
9
+ | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
10
+ | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
11
+ | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
12
+ | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
13
+
14
+ [rubygems-org]: https://github.com/rubygems/
10
15
  [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
11
16
  [draper-takeover]: https://joel.drapper.me/p/ruby-central-takeover/
12
17
  [ellen-takeover]: https://pup-e.com/blog/goodbye-rubygems/
18
+ [simi-removed]: https://www.reddit.com/r/ruby/s/gOk42POCaV
19
+ [martin-removed]: https://bsky.app/profile/martinemde.com/post/3m3occezxxs2q
13
20
  [draper-lies]: https://joel.drapper.me/p/ruby-central-fact-check/
14
21
  [draper-theft]: https://joel.drapper.me/p/ruby-central/
22
+ [reinteractive]: https://reinteractive.com/ruby-on-rails
15
23
  [gem-coop]: https://gem.coop
16
24
  [gem-naming]: https://github.com/gem-coop/gem.coop/issues/12
17
25
  [martin-ann]: https://martinemde.com/2025/10/05/announcing-gem-coop.html
@@ -1,17 +1,25 @@
1
- | 📍 NOTE |
2
- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
- | RubyGems.org [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
4
- | I'm in the process of adding warnings to gems because I [don't condone the theft][draper-theft] of the bundler and rubygems-update projects. |
5
- | If repos or publishing rights for my gems were similarly stolen, I'd hope others would stand up for me. |
6
- | Once publishing to [gem.coop][gem-coop] is available I will stop publishing to RubyGems.org, unless they make amends. |
7
- | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. This ["Technology for Humans" podcast episode][reinteractive-podcast] is the best summary I'm aware of. |
8
- | My (WIP) proposal for [bundler/gem scopes][gem-scopes]. My (WIP) proposal for a federated [gem server][gem-server]. |
9
-
1
+ | 📍 NOTE |
2
+ |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
+ | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
+ | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
+ | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
+ | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
7
+ | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
8
+ | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
9
+ | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
10
+ | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
11
+ | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
12
+ | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
13
+
14
+ [rubygems-org]: https://github.com/rubygems/
10
15
  [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
11
16
  [draper-takeover]: https://joel.drapper.me/p/ruby-central-takeover/
12
17
  [ellen-takeover]: https://pup-e.com/blog/goodbye-rubygems/
18
+ [simi-removed]: https://www.reddit.com/r/ruby/s/gOk42POCaV
19
+ [martin-removed]: https://bsky.app/profile/martinemde.com/post/3m3occezxxs2q
13
20
  [draper-lies]: https://joel.drapper.me/p/ruby-central-fact-check/
14
21
  [draper-theft]: https://joel.drapper.me/p/ruby-central/
22
+ [reinteractive]: https://reinteractive.com/ruby-on-rails
15
23
  [gem-coop]: https://gem.coop
16
24
  [gem-naming]: https://github.com/gem-coop/gem.coop/issues/12
17
25
  [martin-ann]: https://martinemde.com/2025/10/05/announcing-gem-coop.html
data/Rakefile.example CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # kettle-dev Rakefile v1.1.35 - 2025-10-20
3
+ # kettle-dev Rakefile v1.1.37 - 2025-10-21
4
4
  # Ruby 2.3 (Safe Navigation) or higher required
5
5
  #
6
6
  # MIT License (see License.txt)
data/exe/kettle-release CHANGED
@@ -43,28 +43,47 @@ end
43
43
  # Do not guard with __FILE__ == $PROGRAM_NAME because binstubs use Kernel.load.
44
44
  if ARGV.include?("-h") || ARGV.include?("--help")
45
45
  puts <<~USAGE
46
- Usage: kettle-release [start_step=<number>]
46
+ Usage: kettle-release [start_step=<1-19>]
47
47
 
48
- Automates the release flow for a Ruby gem in the host project:
48
+ Automates the release flow for a Ruby gem in the host project.
49
+
50
+ Start steps (use start_step=<n> to begin at that step):
51
+ 1. Verify Bundler >= 2.7 (always runs; start at 1 to do everything)
52
+ 2. Detect version; RubyGems sanity check; confirm CHANGELOG/version; sync copyright years; update badges/headers
53
+ 3. Run bin/setup
54
+ 4. Run bin/rake (default task)
55
+ 5. Run bin/rake appraisal:update if Appraisals present
56
+ 6. Ensure git user configured; commit release prep
57
+ 7. Optional local CI with `act` (controlled by K_RELEASE_LOCAL_CI)
58
+ 8. Ensure trunk in sync across remotes; rebase feature as needed
59
+ 9. Push current branch to remotes (or 'all' remote)
60
+ 10. Monitor CI after push; abort on failures
61
+ 11. Merge feature into trunk and push
62
+ 12. Checkout trunk and pull latest
63
+ 13. Gem signing checks/guidance (skip with SKIP_GEM_SIGNING=true)
64
+ 14. Build gem (bundle exec rake build)
65
+ 15. Release gem (bundle exec rake release)
66
+ 16. Generate and validate checksums (bin/gem_checksums)
67
+ 17. Push checksum commit
68
+ 18. Create GitHub Release (requires GITHUB_TOKEN)
69
+ 19. Push tags to remotes (final)
49
70
 
50
71
  Options:
51
- start_step=<number> # skip directly to the numbered step (e.g., 10 for CI validation)
52
- - Runs bin/setup and bin/rake sanity checks
53
- - Prompts to confirm version and changelog updates
54
- - Commits a release prep change
55
- - Ensures trunk is up-to-date, pushes branch, and monitors CI (GitHub/GitLab)
56
- - Merges feature into trunk upon CI success
57
- - Builds and releases the gem
58
- - Generates checksums (via bin/gem_checksums), then pushes the checksum commit
59
- - Optionally creates a GitHub Release
60
- - Pushes tags to remotes at the end
72
+ start_step=<number> # Begin at the numbered step above (e.g., 10 to resume at CI monitoring)
61
73
 
62
74
  Environment:
63
- SKIP_GEM_SIGNING=true # skip gem signing during build/release
64
- GEM_CERT_USER=<user> # selects certs/<user>.pem for signing
65
- GITHUB_TOKEN / GH_TOKEN # optional, to query GitHub Actions
66
- GITLAB_TOKEN / GL_TOKEN # optional, to query GitLab pipelines
67
- DEBUG=true # print backtraces on errors
75
+ SKIP_GEM_SIGNING=true # Build/release unsigned; avoids PEM password prompts
76
+ GEM_CERT_USER=<user> # Select certs/<user>.pem for signing
77
+ K_RELEASE_LOCAL_CI=ask|1|0 # Use 'act' locally before push; 'ask' prompts, '1' forces, default off
78
+ K_RELEASE_LOCAL_CI_WORKFLOW # Name of workflow (without .yml) for local CI; defaults to locked_deps or first
79
+ GITHUB_TOKEN / GH_TOKEN # Optional; enables GitHub release creation and API queries
80
+ GITLAB_TOKEN / GL_TOKEN # Optional; enables GitLab API queries when applicable
81
+ DEBUG=true # Print backtraces on errors
82
+
83
+ Examples:
84
+ kettle-release # full flow from the top (start_step=1)
85
+ kettle-release start_step=10 # resume by monitoring CI for the current branch
86
+ SKIP_GEM_SIGNING=true kettle-release start_step=14 # build+release without signing
68
87
  USAGE
69
88
  exit 0
70
89
  end
@@ -77,7 +96,7 @@ begin
77
96
  Kettle::Dev::ReleaseCLI.new(start_step: start_step).run
78
97
  rescue LoadError => e
79
98
  warn("#{script_basename}: could not load dependency: #{e.class}: #{e.message}")
80
- warn(e.backtrace.join("\n")) if ENV["DEBUG"]
99
+ warn(Array(e.backtrace).join("\n")) if ENV["DEBUG"]
81
100
  exit(1)
82
101
  rescue SystemExit => e
83
102
  # Preserve exit status, but ensure at least a newline so shells don't show an empty line only.
@@ -85,6 +104,6 @@ rescue SystemExit => e
85
104
  raise
86
105
  rescue StandardError => e
87
106
  warn("#{script_basename}: unexpected error: #{e.class}: #{e.message}")
88
- warn(e.backtrace.join("\n"))
107
+ warn(Array(e.backtrace).join("\n"))
89
108
  exit(1)
90
109
  end
@@ -115,7 +115,7 @@ Gem::Specification.new do |spec|
115
115
  # and preferably a modular one (see gemfiles/modular/*.gemfile).
116
116
 
117
117
  # Dev, Test, & Release Tasks
118
- spec.add_development_dependency("{KETTLE|DEV|GEM}", "~> 1.1") # ruby >= 2.3.0
118
+ spec.add_development_dependency("{KETTLE|DEV|GEM}", "~> 1.1") # ruby >= 2.3.0
119
119
 
120
120
  # Security
121
121
  spec.add_development_dependency("bundler-audit", "~> 0.9.2") # ruby >= 2.0.0
@@ -128,7 +128,7 @@ Gem::Specification.new do |spec|
128
128
 
129
129
  # Testing
130
130
  spec.add_development_dependency("appraisal2", "~> 3.0") # ruby >= 1.8.7, for testing against multiple versions of dependencies
131
- spec.add_development_dependency("kettle-test", "~> 1.0", ">= 1.0.5") # ruby >= 2.3
131
+ spec.add_development_dependency("kettle-test", "~> 1.0", ">= 1.0.6") # ruby >= 2.3
132
132
 
133
133
  # Releasing
134
134
  spec.add_development_dependency("ruby-progressbar", "~> 1.13") # ruby >= 0
@@ -146,6 +146,7 @@ Gem::Specification.new do |spec|
146
146
  # spec.add_development_dependency("erb", ">= 2.2") # ruby >= 2.3.0, not SemVer, old rubies get dropped in a patch.
147
147
  spec.add_development_dependency("gitmoji-regex", "~> 1.0", ">= 1.0.3") # ruby >= 2.3.0
148
148
 
149
+ # HTTP recording for deterministic specs
149
150
  # In Ruby 3.5 (HEAD) the CGI library has been pared down, so we also need to depend on gem "cgi" for ruby@head
150
151
  # This is done in the "head" appraisal.
151
152
  # See: https://github.com/vcr/vcr/issues/1057
@@ -6,7 +6,7 @@ module Kettle
6
6
  module Version
7
7
  # The gem version.
8
8
  # @return [String]
9
- VERSION = "1.1.35"
9
+ VERSION = "1.1.37"
10
10
 
11
11
  module_function
12
12
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.35
4
+ version: 1.1.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -108,7 +108,7 @@ dependencies:
108
108
  version: '1.0'
109
109
  - - ">="
110
110
  - !ruby/object:Gem::Version
111
- version: 1.0.5
111
+ version: 1.0.6
112
112
  type: :development
113
113
  prerelease: false
114
114
  version_requirements: !ruby/object:Gem::Requirement
@@ -118,7 +118,7 @@ dependencies:
118
118
  version: '1.0'
119
119
  - - ">="
120
120
  - !ruby/object:Gem::Version
121
- version: 1.0.5
121
+ version: 1.0.6
122
122
  - !ruby/object:Gem::Dependency
123
123
  name: ruby-progressbar
124
124
  requirement: !ruby/object:Gem::Requirement
@@ -395,10 +395,10 @@ licenses:
395
395
  - MIT
396
396
  metadata:
397
397
  homepage_uri: https://kettle-dev.galtzo.com/
398
- source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1.35
399
- changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1.35/CHANGELOG.md
398
+ source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1.37
399
+ changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1.37/CHANGELOG.md
400
400
  bug_tracker_uri: https://github.com/kettle-rb/kettle-dev/issues
401
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1.35
401
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1.37
402
402
  funding_uri: https://github.com/sponsors/pboling
403
403
  wiki_uri: https://github.com/kettle-rb/kettle-dev/wiki
404
404
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file