kettle-family 0.1.17 → 0.1.18

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: eee55351e363790b515db4ac4534a1763ac7dbbabb772acebabaaafda8579e58
4
- data.tar.gz: 20fb7c07c3c12f2591bda364291859fd08721f68f24c4f5c0f0bb4fa585a1cd5
3
+ metadata.gz: 10fbba264a541a5e75a232b97eaeb6345ca8d39e4890cfbdd94b8e6e8e603b9c
4
+ data.tar.gz: '09e74048d1d9a5bb5bb0bdcad08d501f3aee4d9d0a35902b3e6eeabbb9bd61c0'
5
5
  SHA512:
6
- metadata.gz: e7b378f322009660bd631d6ba9768bbee53ed53cdd1e2fd572f40f41bf0ba93a05f0f14cbc3232d8c649fc959b5c4ff0da1f2323127cef2e642dc906bd922e9b
7
- data.tar.gz: 6aa53a5bbc7dbeca03d986d9980a7908f9e0013cb35c5e5d5ee461ad6736a7f7b65a2a03d483cacfc377a51e67ab68af795cf5c0eb7af8957878397cde356c2b
6
+ metadata.gz: c531f29f32761826c0898234853805f0af313a151232fde19d851e812a8255fd9543515e4142ded8bc2e50146a3887fe950ed1c3de77432f688be76f5809fa2a
7
+ data.tar.gz: de6ea714b9b25f9339b5748b76de0d035b35a32d4fd33f9fd643ab518f0f4e9979d0be9d9267b56470f4fd0ca9abf99ea6df99de67e11468eb010085ba0e6ff5
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,24 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [0.1.18] - 2026-06-25
34
+
35
+ - TAG: [v0.1.18][0.1.18t]
36
+ - COVERAGE: 94.72% -- 1524/1609 lines in 21 files
37
+ - BRANCH COVERAGE: 76.14% -- 536/704 branches in 21 files
38
+ - 39.63% documented
39
+
40
+ ### Added
41
+
42
+ - `kettle-family release` now accepts `--accept` / `--no-accept` to control
43
+ whether interactive confirmation prompts are answered automatically.
44
+
45
+ ### Fixed
46
+
47
+ - Interactive release commands now answer `[y/N]` confirmation prompts before
48
+ writing cached PEM passphrases, preventing confirmation prompts from consuming
49
+ the signing password as input.
50
+
33
51
  ## [0.1.17] - 2026-06-25
34
52
 
35
53
  - TAG: [v0.1.17][0.1.17t]
@@ -319,7 +337,9 @@ Please file a bug if you notice a violation of semantic versioning.
319
337
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
320
338
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
321
339
 
322
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v0.1.17...HEAD
340
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v0.1.18...HEAD
341
+ [0.1.18]: https://github.com/kettle-dev/kettle-family/compare/v0.1.17...v0.1.18
342
+ [0.1.18t]: https://github.com/kettle-dev/kettle-family/releases/tag/v0.1.18
323
343
  [0.1.17]: https://github.com/kettle-dev/kettle-family/compare/v0.1.11...v0.1.17
324
344
  [0.1.17t]: https://github.com/kettle-dev/kettle-family/releases/tag/v0.1.17
325
345
  [0.1.12]: https://github.com/kettle-dev/kettle-family/compare/v0.1.11...v0.1.12
data/README.md CHANGED
@@ -571,7 +571,7 @@ Thanks for RTFM. ☺️
571
571
  [📌gitmoji]: https://gitmoji.dev
572
572
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
573
573
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
574
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-1.595-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
574
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-1.609-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
575
575
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
576
576
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
577
577
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -93,6 +93,8 @@ module Kettle
93
93
  --local-ci Pass --local-ci through to kettle-release commands
94
94
  --continue-ci-failures
95
95
  Set K_RELEASE_CI_CONTINUE=true for release commands
96
+ --accept Answer yes to confirmation prompts in interactive commands (default)
97
+ --no-accept Wait for user input at confirmation prompts
96
98
  --tag Add release tag phase
97
99
  --push Add release push phase
98
100
  --commit Allow each templated member's kettle-jem run to commit (default)
@@ -122,6 +124,7 @@ module Kettle
122
124
  release_start_step: nil,
123
125
  release_local_ci: false,
124
126
  release_continue_ci_failures: false,
127
+ accept: true,
125
128
  tag: false,
126
129
  push: false,
127
130
  commit: true,
@@ -147,6 +150,8 @@ module Kettle
147
150
  parser.on("--start-step N", Integer) { |value| options[:release_start_step] = value }
148
151
  parser.on("--local-ci") { options[:release_local_ci] = true }
149
152
  parser.on("--continue-ci-failures") { options[:release_continue_ci_failures] = true }
153
+ parser.on("--accept") { options[:accept] = true }
154
+ parser.on("--no-accept") { options[:accept] = false }
150
155
  parser.on("--tag") { options[:tag] = true }
151
156
  parser.on("--push") { options[:push] = true }
152
157
  parser.on("--commit") { options[:commit] = true }
@@ -212,6 +217,7 @@ module Kettle
212
217
  config: config,
213
218
  members: members,
214
219
  execute: options[:execute],
220
+ accept: options[:accept],
215
221
  commit: options[:commit],
216
222
  allow_dirty: options[:allow_dirty],
217
223
  publish: options[:publish],
@@ -5,8 +5,9 @@ require "open3"
5
5
  module Kettle
6
6
  module Family
7
7
  class CommandRunner
8
- def initialize(execute: false, gem_signing_password: nil)
8
+ def initialize(execute: false, accept: true, gem_signing_password: nil)
9
9
  @execute = execute
10
+ @accept = accept
10
11
  @gem_signing_password = gem_signing_password
11
12
  end
12
13
 
@@ -41,7 +42,7 @@ module Kettle
41
42
 
42
43
  private
43
44
 
44
- attr_reader :execute, :gem_signing_password
45
+ attr_reader :execute, :accept, :gem_signing_password
45
46
 
46
47
  def run_interactive(env:, argv:, chdir:)
47
48
  return run_interactive_pty(env: env, argv: argv, chdir: chdir) if pty_available?
@@ -63,7 +64,7 @@ module Kettle
63
64
  chunk = output.readpartial(1024)
64
65
  stdout << chunk
65
66
  $stdout.print(chunk)
66
- write_signing_password(input, chunk)
67
+ handle_interactive_prompt(input, chunk)
67
68
  else
68
69
  input.write($stdin.readpartial(1024))
69
70
  end
@@ -108,7 +109,7 @@ module Kettle
108
109
  captured_stderr << chunk
109
110
  $stderr.print(chunk)
110
111
  end
111
- write_signing_password(input, chunk)
112
+ handle_interactive_prompt(input, chunk)
112
113
  rescue EOFError
113
114
  readers.delete(reader)
114
115
  end
@@ -129,6 +130,24 @@ module Kettle
129
130
  input.flush
130
131
  end
131
132
 
133
+ def handle_interactive_prompt(input, chunk)
134
+ if accept_confirmation_prompt?(chunk)
135
+ write_accept_response(input) if accept
136
+ return
137
+ end
138
+
139
+ write_signing_password(input, chunk)
140
+ end
141
+
142
+ def write_accept_response(input)
143
+ input.write("y\n")
144
+ input.flush
145
+ end
146
+
147
+ def accept_confirmation_prompt?(chunk)
148
+ chunk.match?(/\[[Yy]\/[Nn]\]\s*:?/)
149
+ end
150
+
132
151
  def signing_password_prompt?(chunk)
133
152
  chunk.match?(/pass(?:\s|-)?phrase|PEM password|private key password/i)
134
153
  end
@@ -3,7 +3,7 @@
3
3
  module Kettle
4
4
  module Family
5
5
  module Version
6
- VERSION = "0.1.17"
6
+ VERSION = "0.1.18"
7
7
  end
8
8
  VERSION = Version::VERSION # Traditional Constant Location
9
9
  end
@@ -21,11 +21,12 @@ module Kettle
21
21
  "up" => [["pull", %w[git pull --rebase]], ["push", %w[git push]]]
22
22
  }.freeze
23
23
 
24
- def initialize(command:, config:, members:, execute: false, commit: true, allow_dirty: false, publish: false, push: false, tag: false, start_step: nil, local_ci: false, continue_ci_failures: false, gha_sha_pins_upgrade: "patch", gha_sha_pins_check: false, env_overrides: {}, gem_signing_password: nil)
24
+ def initialize(command:, config:, members:, execute: false, accept: true, commit: true, allow_dirty: false, publish: false, push: false, tag: false, start_step: nil, local_ci: false, continue_ci_failures: false, gha_sha_pins_upgrade: "patch", gha_sha_pins_check: false, env_overrides: {}, gem_signing_password: nil)
25
25
  @command = command
26
26
  @config = config
27
27
  @members = members
28
28
  @execute = execute
29
+ @accept = accept
29
30
  @commit = commit
30
31
  @allow_dirty = allow_dirty
31
32
  @publish = publish
@@ -50,7 +51,7 @@ module Kettle
50
51
 
51
52
  private
52
53
 
53
- attr_reader :command, :config, :members, :execute, :commit, :allow_dirty, :publish, :push, :tag, :start_step, :local_ci, :continue_ci_failures, :gha_sha_pins_upgrade, :gha_sha_pins_check, :env_overrides
54
+ attr_reader :command, :config, :members, :execute, :accept, :commit, :allow_dirty, :publish, :push, :tag, :start_step, :local_ci, :continue_ci_failures, :gha_sha_pins_upgrade, :gha_sha_pins_check, :env_overrides
54
55
 
55
56
  def current_branch_results(workflow_members)
56
57
  return check_results(workflow_members) if command == "check"
@@ -61,7 +62,7 @@ module Kettle
61
62
  end
62
63
 
63
64
  def member_workflow_results(workflow_members)
64
- runner = CommandRunner.new(execute: execute)
65
+ runner = CommandRunner.new(execute: execute, accept: accept)
65
66
  workflow_members.each_with_object([]) do |member, memo|
66
67
  if command == "template" && config.normalize_lockfiles?
67
68
  normalize_lockfiles(member: member, runner: runner, memo: memo, phase: "prepare_lockfiles")
@@ -139,6 +140,7 @@ module Kettle
139
140
  config: member_config,
140
141
  members: [member],
141
142
  execute: execute,
143
+ accept: accept,
142
144
  commit: commit,
143
145
  allow_dirty: allow_dirty,
144
146
  publish: publish,
@@ -203,7 +205,7 @@ module Kettle
203
205
  end
204
206
 
205
207
  def command_runner
206
- CommandRunner.new(execute: execute, gem_signing_password: @gem_signing_password)
208
+ CommandRunner.new(execute: execute, accept: accept, gem_signing_password: @gem_signing_password)
207
209
  end
208
210
 
209
211
  def rediscovered_selected_members(selected_names)
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-family
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.17
4
+ version: 0.1.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -310,10 +310,10 @@ licenses:
310
310
  - AGPL-3.0-only
311
311
  metadata:
312
312
  homepage_uri: https://kettle-family.galtzo.com
313
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.1.17
314
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.1.17/CHANGELOG.md
313
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.1.18
314
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.1.18/CHANGELOG.md
315
315
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
316
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.1.17
316
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.1.18
317
317
  funding_uri: https://github.com/sponsors/pboling
318
318
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
319
319
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file