kettle-dev 1.0.4 → 1.0.6

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: d8deda6f16a7ffb26b4122b469c1b74a79e3213146eabe11d694f5685759daed
4
- data.tar.gz: 39576c04b2224fc95d9a9c12f37a04de6db556f3aab6f92f8733eb5742a0ff2d
3
+ metadata.gz: b3b269c7a7a4d0d12e5aa6364bcd7e95290258da6262ae463940d7db44be6bd9
4
+ data.tar.gz: 89567fe63abc8bb1ca5ad2438b39865fa15a34bf0e4a7705faca5501802cc178
5
5
  SHA512:
6
- metadata.gz: 97f743744b2a0ecaf4b7107886508e94b45a0c77152e3c1e14944ad0f3799a04cb26a8ad7bec59f3372a9c5f4a1a245b3630e7d518a889936e9adae186a39ee8
7
- data.tar.gz: 3e7b3a47b47925c57f349932a8205a705ea44c288428ad35026241957aed25ec5c7bed835775a49db8616c0736e40f790b4ea6dcfacc195b09dfdc59960c2e3e
6
+ metadata.gz: c2dd6b2114143f8fbe0a09d34f70a33c6e58a37edf6c23f48b1775cc7bd0bd8a1f12c1001dda6e3efdbedd746db34d73745f99bf8018ea0ae478d13787e3e037
7
+ data.tar.gz: 07aa24311c9e6174a5007aca0814d16c2854ce06023eabbadbbd8bf546ae8340b3c24f050e862a47549905b9d7a6773d4fcab02067cb6d70dcb55cf9b389d82f
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -12,6 +12,22 @@ and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.
12
12
  ### Fixed
13
13
  ### Security
14
14
 
15
+ ## [1.0.6] - 2025-08-24
16
+ - TAG: [v1.0.6][1.0.6t]
17
+ - COVERAGE: 100.00% -- 130/130 lines in 7 files
18
+ - BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files
19
+ - 95.35% documented
20
+ ### Fixed
21
+ - kettle-release: ensure SOURCE_DATE_EPOCH is applied within the same shell for both build and release by prefixing the commands with the env var (e.g., `SOURCE_DATE_EPOCH=$epoch bundle exec rake build` and `... rake release`); prevents losing the variable across shell boundaries and improves reproducible checksums.
22
+
23
+ ## [1.0.5] - 2025-08-24
24
+ - TAG: [v1.0.5][1.0.5t]
25
+ - COVERAGE: 100.00% -- 130/130 lines in 7 files
26
+ - BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files
27
+ - 95.35% documented
28
+ ### Fixed
29
+ - kettle-release: will run regardless of how it is invoked (i.e. works as binstub)
30
+
15
31
  ## [1.0.4] - 2025-08-24
16
32
  - TAG: [v1.0.4][1.0.4t]
17
33
  - COVERAGE: 100.00% -- 130/130 lines in 7 files
@@ -83,7 +99,11 @@ and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.
83
99
  - Selecting will run the selected workflow via `act`
84
100
  - This may move to its own gem in the future.
85
101
 
86
- [Unreleased]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.4...HEAD
102
+ [Unreleased]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.6...HEAD
103
+ [1.0.6]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.5...v1.0.6
104
+ [1.0.6t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.6
105
+ [1.0.5]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.4...v1.0.5
106
+ [1.0.5t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.5
87
107
  [1.0.4]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.3...v1.0.4
88
108
  [1.0.4t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.4
89
109
  [1.0.3]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.2...v1.0.3
@@ -0,0 +1 @@
1
+ 57458ade85e8ec3c36087f4ffd6f07b2efa3e139a6787017387772014b6fc620
@@ -0,0 +1 @@
1
+ 668add6ecffd144af422608ea3b072b5feecc82a93fc387d356d25fac02367ab73edf44e3c72bb17c8f8b1bbe153d1d01673d44df9d84b46ab83761b85e2665f
data/exe/kettle-release CHANGED
@@ -21,15 +21,22 @@ rescue LoadError
21
21
  # Allow running outside of Bundler; runtime deps should still be available via rubygems
22
22
  end
23
23
 
24
- require "open3"
25
- require "shellwords"
26
- require "time"
27
- require "fileutils"
28
- require "net/http"
29
- require "json"
30
- require "uri"
31
- require "kettle/dev/ci_helpers"
32
- require "ruby-progressbar"
24
+ begin
25
+ require "open3"
26
+ require "shellwords"
27
+ require "time"
28
+ require "fileutils"
29
+ require "net/http"
30
+ require "json"
31
+ require "uri"
32
+ require "kettle/dev/ci_helpers"
33
+ require "ruby-progressbar"
34
+ rescue LoadError => e
35
+ warn("kettle-release: failed to load a required library: #{e.message}")
36
+ warn("Hint: Ensure the host project includes kettle-dev and its runtime deps, then run bundle install.")
37
+ warn(e.backtrace.join("\n")) if ENV["DEBUG"]
38
+ exit(1)
39
+ end
33
40
 
34
41
  module Kettle
35
42
  module Dev
@@ -85,12 +92,12 @@ module Kettle
85
92
  checkout!(trunk)
86
93
  pull!(trunk)
87
94
 
88
- export_source_date_epoch!
95
+ epoch = export_source_date_epoch!
89
96
 
90
97
  ensure_signing_setup_or_skip!
91
98
  # Build: expect PEM password prompt unless SKIP_GEM_SIGNING
92
99
  puts "Running build (you may be prompted for the signing key password)..."
93
- run_cmd!("bundle exec rake build")
100
+ run_cmd!("SOURCE_DATE_EPOCH=#{epoch} bundle exec rake build")
94
101
 
95
102
  # Checksums (commits, but does not push)
96
103
  run_cmd!("bin/gem_checksums")
@@ -98,7 +105,7 @@ module Kettle
98
105
 
99
106
  # Release: expect PEM password + RubyGems MFA OTP
100
107
  puts "Running release (you may be prompted for signing key password and RubyGems MFA OTP)..."
101
- run_cmd!("bundle exec rake release")
108
+ run_cmd!("SOURCE_DATE_EPOCH=#{epoch} bundle exec rake release")
102
109
  # Some release tasks rebuild the gem; re-validate to ensure reproducibility
103
110
  validate_checksums!(version, stage: "after release")
104
111
 
@@ -479,6 +486,7 @@ module Kettle
479
486
  epoch = Time.now.to_i
480
487
  ENV["SOURCE_DATE_EPOCH"] = epoch.to_s
481
488
  puts "Exported SOURCE_DATE_EPOCH=#{epoch}"
489
+ epoch
482
490
  end
483
491
 
484
492
  def ensure_signing_setup_or_skip!
@@ -554,6 +562,42 @@ module Kettle
554
562
  end
555
563
  end
556
564
 
557
- if __FILE__ == $PROGRAM_NAME
565
+ # Always execute when this file is loaded (e.g., via a Bundler binstub).
566
+ # Do not guard with __FILE__ == $PROGRAM_NAME because binstubs use Kernel.load.
567
+ if ARGV.include?("-h") || ARGV.include?("--help")
568
+ puts <<~USAGE
569
+ Usage: kettle-release
570
+
571
+ Automates the release flow for a Ruby gem in the host project:
572
+ - Runs bin/setup and bin/rake sanity checks
573
+ - Prompts to confirm version and changelog updates
574
+ - Commits a release prep change
575
+ - Ensures trunk is up-to-date, pushes branch, and monitors CI (GitHub/GitLab)
576
+ - Merges feature into trunk upon CI success
577
+ - Exports SOURCE_DATE_EPOCH, builds, records checksums, and releases
578
+
579
+ Environment:
580
+ SKIP_GEM_SIGNING=true # skip gem signing during build/release
581
+ GEM_CERT_USER=<user> # selects certs/<user>.pem for signing
582
+ GITHUB_TOKEN / GH_TOKEN # optional, to query GitHub Actions
583
+ GITLAB_TOKEN / GL_TOKEN # optional, to query GitLab pipelines
584
+ DEBUG=true # print backtraces on errors
585
+ USAGE
586
+ exit 0
587
+ end
588
+
589
+ begin
558
590
  Kettle::Dev::ReleaseCLI.new.run
591
+ rescue LoadError => e
592
+ warn("kettle-release: could not load dependency: #{e.message}")
593
+ warn(e.backtrace.join("\n")) if ENV["DEBUG"]
594
+ exit(1)
595
+ rescue SystemExit => e
596
+ # Preserve exit status, but ensure at least a newline so shells don't show an empty line only.
597
+ warn("kettle-release exited (status=#{e.status})") if e.status != 0
598
+ raise
599
+ rescue StandardError => e
600
+ warn("kettle-release: unexpected error: #{e.class}: #{e.message}")
601
+ warn(e.backtrace.join("\n"))
602
+ exit(1)
559
603
  end
@@ -6,7 +6,7 @@ module Kettle
6
6
  module Version
7
7
  # The gem version.
8
8
  # @return [String]
9
- VERSION = "1.0.4"
9
+ VERSION = "1.0.6"
10
10
  end
11
11
  end
12
12
  end
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.0.4
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -203,8 +203,8 @@ extra_rdoc_files:
203
203
  - REEK
204
204
  - RUBOCOP.md
205
205
  - SECURITY.md
206
- - checksums/kettle-dev-1.0.4.gem.sha256
207
- - checksums/kettle-dev-1.0.4.gem.sha512
206
+ - checksums/kettle-dev-1.0.6.gem.sha256
207
+ - checksums/kettle-dev-1.0.6.gem.sha512
208
208
  files:
209
209
  - ".devcontainer/devcontainer.json"
210
210
  - ".envrc"
@@ -256,8 +256,8 @@ files:
256
256
  - RUBOCOP.md
257
257
  - Rakefile
258
258
  - SECURITY.md
259
- - checksums/kettle-dev-1.0.4.gem.sha256
260
- - checksums/kettle-dev-1.0.4.gem.sha512
259
+ - checksums/kettle-dev-1.0.6.gem.sha256
260
+ - checksums/kettle-dev-1.0.6.gem.sha512
261
261
  - exe/kettle-commit-msg
262
262
  - exe/kettle-readme-backers
263
263
  - exe/kettle-release
@@ -290,10 +290,10 @@ licenses:
290
290
  - MIT
291
291
  metadata:
292
292
  homepage_uri: https://kettle-dev.galtzo.com/
293
- source_code_uri: https://github.com/galtzo-floss/kettle-dev/tree/v1.0.4
294
- changelog_uri: https://github.com/galtzo-floss/kettle-dev/blob/v1.0.4/CHANGELOG.md
293
+ source_code_uri: https://github.com/galtzo-floss/kettle-dev/tree/v1.0.6
294
+ changelog_uri: https://github.com/galtzo-floss/kettle-dev/blob/v1.0.6/CHANGELOG.md
295
295
  bug_tracker_uri: https://github.com/galtzo-floss/kettle-dev/issues
296
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.0.4
296
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.0.6
297
297
  funding_uri: https://github.com/sponsors/pboling
298
298
  wiki_uri: https://github.com/galtzo-floss/kettle-dev/wiki
299
299
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file
@@ -1 +0,0 @@
1
- 772ba761ef205f134e3a096fbfde418b3d699093482ff345bd755f8f596f9de7
@@ -1 +0,0 @@
1
- 5e791a2feaa44cfcede4c5e933f2d44725dd6c84d5b44511d8e26147a1540ed3455508fd9c2e1ed8d07093009863b2db38ff9532939404aed7f047091c495e36