kettle-dev 3.0.12 → 3.0.13

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: 778a9528095541a29e4c6a15022c1fe312cf32ccb8f336972c046b02134bae32
4
- data.tar.gz: bcc27b14726e3f17ad56b4e305e324c4ccb38df57df754f5f41b73e121f33a41
3
+ metadata.gz: a082b4a2994774e072557058c17670f3f4252e98bf4c406c38265233e37f10df
4
+ data.tar.gz: c09ac0a7de3fda62be5676f735a170c6577816cdfde710cbcf48d8805e5e6040
5
5
  SHA512:
6
- metadata.gz: 4f4b916aeb6714071d76ab84ae57e08650e42fe0607df2e7b366855932c66019ad3f8a2ba37befa0089b9261eb38092ab3bc33cce61237b0d9880139da3399de
7
- data.tar.gz: 238a0802ae743f219f919a9fbdd2d1500aeea06ad8a756e5e377c4bc8c275e0d80bf07911f9a78b94e0095e9809afbb8eaeb9f98d9ee2e6db72242cfc2aa5fd9
6
+ metadata.gz: 41b0bf2772bd39e1f164b82dc1bf0f07accc07a3310a7e642c75ba1729b2c3cca5db0030b16b0af015e63c6902b596276f79470fc2f646be964a03ec485e565c
7
+ data.tar.gz: 57a42e46f0dfb6ad000c952e82a46a3f39308d9e3036363f21a8664b00fbb30e3a5a2e96eef8d88bf6a7aa5a68d9b935e934d450796962688ddba216af7ac92a
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,17 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [3.0.13] - 2026-08-25
34
+
35
+ - TAG: [v3.0.13][3.0.13t]
36
+ - COVERAGE: 91.54% -- 5758/6290 lines in 47 files
37
+ - BRANCH COVERAGE: 76.44% -- 2210/2891 branches in 47 files
38
+ - 50.74% documented
39
+
40
+ ### Changed
41
+
42
+ - Add named standalone release aliases for CI bypass and numbered-step recovery.
43
+
33
44
  ## [3.0.12] - 2026-08-25
34
45
 
35
46
  - TAG: [v3.0.12][3.0.12t]
@@ -3557,7 +3568,9 @@ Please file a bug if you notice a violation of semantic versioning.
3557
3568
  - Selecting will run the selected workflow via `act`
3558
3569
  - This may move to its own gem in the future.
3559
3570
 
3560
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.12...HEAD
3571
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.13...HEAD
3572
+ [3.0.13]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.12...v3.0.13
3573
+ [3.0.13t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.13
3561
3574
  [3.0.12]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.11...v3.0.12
3562
3575
  [3.0.12t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.12
3563
3576
  [3.0.11]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.10...v3.0.11
data/README.md CHANGED
@@ -443,11 +443,11 @@ What it does:
443
443
  18. Create GitHub Release (requires `GITHUB_TOKEN`)
444
444
  19. Push tags to remotes (final)
445
445
  - Examples:
446
- - After a transient CI or provider failure with no code, version, changelog, or lockfile changes, restart from monitoring: `bundle exec kettle-release start_step=10`
446
+ - After a transient CI or provider failure with no code, version, changelog, or lockfile changes, restart from monitoring: `bundle exec kettle-release --start-step 10` (the legacy `start_step=10` spelling remains supported)
447
447
  - If the failure required a code or release-metadata change, rerun `bundle exec kettle-release` from step 0 so the release checks, prep metadata, commit, and CI all describe the new release commit.
448
- - For an intentional same-commit CI bypass, use `bundle exec kettle-release skip_steps=10` or `--skip-steps 10`; this skips remote CI monitoring only and does not claim that CI passed.
448
+ - For an intentional same-commit CI bypass, use `bundle exec kettle-release --skip-ci` (or `--skip-steps 10`); this skips remote CI monitoring only and does not claim that CI passed.
449
449
  - After fixing a failed pre-release gate, rerun from step 0: `bundle exec kettle-release`
450
- - After intentionally handling a failed pre-release gate, skip it and start numbered release steps: `bundle exec kettle-release start_step=1`
450
+ - After intentionally handling a failed pre-release gate, skip it and start numbered release steps: `bundle exec kettle-release --start-step 1`
451
451
  - Auto-approve release confirmation prompts: `bundle exec kettle-release --yes`
452
452
  - Run direct release with 1Password secrets: `bundle exec kettle-release --secrets-provider 1password`
453
453
  - Lockfile recovery:
data/exe/kettle-release CHANGED
@@ -49,16 +49,16 @@ end
49
49
  # Do not guard with __FILE__ == $PROGRAM_NAME because binstubs use Kernel.load.
50
50
  if ARGV.include?("-h") || ARGV.include?("--help")
51
51
  puts <<~USAGE
52
- Usage: kettle-release [--version VERSION] [--local-ci] [--yes] [--appraisal-update] [--skip-changelog] [--skip-bundle-audit] [--skip-steps STEPS] [--ci-workflows WORKFLOWS] [--skip-remotes REMOTES] [--required-remotes REMOTES] [--secrets-provider NAME] [--json|--events[=TYPES]] [--report PATH] [start_step=<0-19>]
52
+ Usage: kettle-release [--version VERSION] [--local-ci] [--yes] [--appraisal-update] [--skip-changelog] [--skip-bundle-audit] [--start-step STEP] [--skip-ci] [--skip-steps STEPS] [--ci-workflows WORKFLOWS] [--skip-remotes REMOTES] [--required-remotes REMOTES] [--secrets-provider NAME] [--json|--events[=TYPES]] [--report PATH] [start_step=<0-19>]
53
53
 
54
54
  Automates the release flow for a Ruby gem in the host project.
55
55
 
56
56
  Full releases start at step 0 and run `kettle-pre-release` plus
57
- `kettle-changelog` before the numbered release steps. Any start_step
57
+ `kettle-changelog` before the numbered release steps. Any start step
58
58
  greater than 0 skips pre-release prep and resumes directly at the
59
59
  requested numbered step.
60
60
 
61
- Start steps (use start_step=<n> to begin at that step):
61
+ Start steps (use --start-step <n>; start_step=<n> remains supported):
62
62
  0. Run kettle-pre-release gates and kettle-changelog
63
63
  1. Verify Bundler >= 2.7 (start at 1 to skip pre-release checks)
64
64
  2. Detect version; RubyGems sanity check; confirm CHANGELOG/version; sync copyright years; update badges/headers
@@ -82,7 +82,9 @@ if ARGV.include?("-h") || ARGV.include?("--help")
82
82
  19. Push tags to remotes (final)
83
83
 
84
84
  Options:
85
- start_step=<number> # Begin at the numbered step above; use 10 only for a transient CI failure on the same commit
85
+ --start-step NUMBER # Begin at the numbered step above; use 10 only for a transient CI failure on the same commit
86
+ start_step=<number> # Legacy alias for --start-step
87
+ --skip-ci # Alias for --skip-steps 10; skips remote CI monitoring while running the rest
86
88
  skip_steps=<numbers> # Comma-separated numbered steps to skip while running the rest; 10 skips remote CI monitoring
87
89
  --skip-steps NUMBERS # Alias for skip_steps=NUMBERS (e.g., --skip-steps 10 or --skip-steps 10,18)
88
90
  --version VERSION # Use this version instead of detecting VERSION from lib/**/version.rb
@@ -101,9 +103,11 @@ if ARGV.include?("-h") || ARGV.include?("--help")
101
103
  # create the git tag locally, then push commits and tags after publish
102
104
 
103
105
  Recovery guidance:
104
- start_step=10 # Retry only CI monitoring after a transient CI/provider failure; do not use after code or metadata changes
105
- start_step=11 # Continue after CI monitoring only when that same release commit was intentionally accepted
106
- skip_steps=10 # Skip remote CI monitoring for the same prepared release commit; this does not rerun or replace CI
106
+ --start-step 10 # Retry only CI monitoring after a transient CI/provider failure; do not use after code or metadata changes
107
+ --start-step 11 # Continue after CI monitoring only when that same release commit was intentionally accepted
108
+ --skip-ci # Skip remote CI monitoring for the same prepared release commit; this does not rerun or replace CI
109
+ start_step=10 # Legacy spelling of --start-step 10
110
+ skip_steps=10 # Legacy spelling of --skip-ci
107
111
  kettle-release # After code, version, changelog, or lockfile changes, rerun the complete flow from step 0
108
112
 
109
113
  Environment:
@@ -139,10 +143,11 @@ if ARGV.include?("-h") || ARGV.include?("--help")
139
143
  Examples:
140
144
  kettle-release # full flow from the top (start_step=0)
141
145
  kettle-release --local-ci # run local act CI, publish gem, then push commits/tags
142
- kettle-release start_step=1 # skip pre-release checks and start numbered release steps
143
- kettle-release start_step=10 # retry CI monitoring after a transient failure on the unchanged release commit
144
- kettle-release skip_steps=10 # intentionally skip remote CI monitoring for the unchanged release commit
145
- SKIP_GEM_SIGNING=true kettle-release start_step=14 # build+release without signing
146
+ kettle-release --start-step 1 # skip pre-release checks and start numbered release steps
147
+ kettle-release --start-step 10 # retry CI monitoring after a transient failure on the unchanged release commit
148
+ kettle-release --skip-ci # intentionally skip remote CI monitoring for the unchanged release commit
149
+ kettle-release start_step=10 # legacy spelling of --start-step 10
150
+ SKIP_GEM_SIGNING=true kettle-release --start-step 14 # build+release without signing
146
151
  USAGE
147
152
  exit 0
148
153
  end
@@ -184,6 +189,31 @@ def extract_skip_steps_arg!(argv)
184
189
  skip_steps
185
190
  end
186
191
 
192
+ def extract_start_step_arg!(argv)
193
+ start_step = nil
194
+ if (idx = argv.index("--start-step"))
195
+ start_step = argv[idx + 1]
196
+ if start_step.to_s.empty? || start_step.to_s.start_with?("-")
197
+ Kettle::Dev::ExitAdapter.abort("--start-step requires a numbered release step")
198
+ end
199
+ argv.slice!(idx, 2)
200
+ end
201
+ argv.delete_if do |arg|
202
+ if arg.start_with?("--start-step=", "start_step=")
203
+ start_step = arg.split("=", 2)[1]
204
+ Kettle::Dev::ExitAdapter.abort("--start-step requires a numbered release step") if start_step.to_s.empty?
205
+ true
206
+ else
207
+ false
208
+ end
209
+ end
210
+ start_step
211
+ end
212
+
213
+ def extract_skip_ci_arg!(argv)
214
+ !!argv.delete("--skip-ci")
215
+ end
216
+
187
217
  def extract_skip_changelog_arg!(argv)
188
218
  skip_changelog = !!argv.delete("--skip-changelog")
189
219
  argv.delete_if do |arg|
@@ -326,10 +356,11 @@ skip_changelog = extract_skip_changelog_arg!(ARGV)
326
356
  json_output = !!ARGV.delete("--json")
327
357
  events_output, event_types = extract_events_arg!(ARGV)
328
358
  Kettle::Dev::ExitAdapter.abort("--events cannot be combined with --json") if events_output && json_output
329
- start_step_arg = ARGV.find { |a| a.start_with?("start_step=") }
330
- start_step = start_step_arg ? start_step_arg.split("=", 2)[1].to_i : 0
359
+ start_step = extract_start_step_arg!(ARGV) || 0
360
+ skip_ci = extract_skip_ci_arg!(ARGV)
331
361
  version_override = extract_version_arg!(ARGV)
332
362
  skip_steps = extract_skip_steps_arg!(ARGV)
363
+ skip_steps = [skip_steps, "10"].compact.join(",") if skip_ci
333
364
  ci_workflows = extract_ci_workflows_arg!(ARGV)
334
365
  skip_remotes = extract_skip_remotes_arg!(ARGV)
335
366
  required_remotes = extract_required_remotes_arg!(ARGV)
@@ -49,7 +49,7 @@ module Kettle
49
49
  #
50
50
  # @param restart_hint [String] guidance command shown on failure
51
51
  # @return [Boolean] whether all configured CI providers passed
52
- def monitor_all!(restart_hint: "bundle exec kettle-release start_step=10", workflows: nil, keepalive: nil, event_recorder: nil, **options)
52
+ def monitor_all!(restart_hint: "bundle exec kettle-release --start-step 10", workflows: nil, keepalive: nil, event_recorder: nil, **options)
53
53
  results = [
54
54
  monitor_github_internal!(restart_hint: restart_hint, workflows: workflows, keepalive: keepalive, event_recorder: event_recorder),
55
55
  monitor_gitlab_internal!(restart_hint: restart_hint, keepalive: keepalive, event_recorder: event_recorder)
@@ -69,7 +69,7 @@ module Kettle
69
69
  # Returns false when GitLab is not configured for this repo/branch.
70
70
  # @param restart_hint [String]
71
71
  # @return [Boolean]
72
- def monitor_gitlab!(restart_hint: "bundle exec kettle-release start_step=10")
72
+ def monitor_gitlab!(restart_hint: "bundle exec kettle-release --start-step 10")
73
73
  result = monitor_gitlab_internal!(restart_hint: restart_hint)
74
74
  result.nil? ? false : result
75
75
  end
@@ -138,7 +138,7 @@ module Kettle
138
138
  # Designed for kettle-release.
139
139
  # @param restart_hint [String]
140
140
  # @return [void]
141
- def monitor_and_prompt_for_release!(restart_hint: "bundle exec kettle-release start_step=10")
141
+ def monitor_and_prompt_for_release!(restart_hint: "bundle exec kettle-release --start-step 10")
142
142
  results = collect_all
143
143
  any_checks = !(results[:github].nil? || results[:github].empty?) || !!results[:gitlab]
144
144
  abort("CI configuration not detected (GitHub or GitLab). Ensure CI is configured and remotes point to the correct hosts.") unless any_checks
@@ -1253,7 +1253,7 @@ module Kettle
1253
1253
  def monitor_workflows_after_push!
1254
1254
  ensure_github_pull_request_for_ci!
1255
1255
  keep_release_secrets_alive!("CI monitoring")
1256
- restart_hint = "bundle exec kettle-release start_step=10"
1256
+ restart_hint = "bundle exec kettle-release --start-step 10"
1257
1257
  emit_ci_monitor_event(action: "start", status: "started", workflows: @ci_workflows, restart_hint: restart_hint)
1258
1258
  # The monitor preserves fail-fast behavior by default and returns false
1259
1259
  # when K_RELEASE_CI_CONTINUE explicitly allows failed CI checks.
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "3.0.12"
8
+ VERSION = "3.0.13"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
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: 3.0.12
4
+ version: 3.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -400,10 +400,10 @@ licenses:
400
400
  - AGPL-3.0-only
401
401
  metadata:
402
402
  homepage_uri: https://kettle-dev.galtzo.com
403
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.12
404
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.12/CHANGELOG.md
403
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.13
404
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.13/CHANGELOG.md
405
405
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
406
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.12
406
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.13
407
407
  funding_uri: https://github.com/sponsors/pboling
408
408
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
409
409
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file