kettle-family 1.1.4 → 1.1.5

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: eafb1c2637486f15a03b2dc3b00c2218033969abfd1bb8f3cebf6365656d9a1b
4
- data.tar.gz: fdf90e5eefa73eb2ab307cbae5e50eab961979de00df2bdc64e3da834a90d84b
3
+ metadata.gz: 982720b995ca0f74423a382c1e46d8f8b9fe27570dcc2f4d5bf157f14622276c
4
+ data.tar.gz: 942038041794d1744e68342280b457457de52c41f8ce2558bd568b8ebb429ca1
5
5
  SHA512:
6
- metadata.gz: 4bbbc81d57861465081de1ae16a75a22f68ad13e981aefdd7c4e1a936841af24592da9d12256d6b37d9ebb30d8d625ba1fba3c2ba885e1a8ad04696d18563c47
7
- data.tar.gz: 9fcac93653c0b932552e55f62e646f7d308f3b5a195c42c90d704304472a9e8373e7e5ed13560180c5f0496c04e27e8e8f9464f72f213987f19e4e045db5797c
6
+ metadata.gz: caeb1ffc7bd5bc0cddd161db05ec9b2c505373ee295c39531736adfd5f19bf014690590b6e890690b71b2445cf81e49585d67f206117a7d2c2770807fd87046f
7
+ data.tar.gz: fbe08c43a39f538c45fb5918e6661f5d7d317721908710ddc29fd6b67f3269648874f43c6b98591b7c4a3ff06c347428c30efd2ae3067c34de449cc0983df257
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,27 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.1.5] - 2026-07-25
34
+
35
+ - TAG: [v1.1.5][1.1.5t]
36
+ - COVERAGE: 94.64% -- 3021/3192 lines in 25 files
37
+ - BRANCH COVERAGE: 76.45% -- 1110/1452 branches in 25 files
38
+ - 28.68% documented
39
+
40
+ ### Added
41
+
42
+ - Release orchestration now passes `--events` through to `kettle-release` and
43
+ maps release NDJSON events into the family progress display.
44
+
45
+ ### Changed
46
+
47
+ - kettle-jem-template-initial - Initial templating by kettle-jem.
48
+
49
+ ### Fixed
50
+
51
+ - Failed release command reports now summarize release NDJSON diagnostics and
52
+ final status instead of dumping the raw event stream into the human report.
53
+
33
54
  ## [1.1.4] - 2026-07-24
34
55
 
35
56
  - TAG: [v1.1.4][1.1.4t]
@@ -965,7 +986,9 @@ Please file a bug if you notice a violation of semantic versioning.
965
986
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
966
987
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
967
988
 
968
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.1.4...HEAD
989
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.1.5...HEAD
990
+ [1.1.5]: https://github.com/kettle-dev/kettle-family/compare/v1.1.4...v1.1.5
991
+ [1.1.5t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.1.5
969
992
  [1.1.4]: https://github.com/kettle-dev/kettle-family/compare/v1.1.3...v1.1.4
970
993
  [1.1.4t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.1.4
971
994
  [1.1.3]: https://github.com/kettle-dev/kettle-family/compare/v1.1.2...v1.1.3
data/README.md CHANGED
@@ -669,7 +669,7 @@ Thanks for RTFM. ☺️
669
669
  [📌gitmoji]: https://gitmoji.dev
670
670
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
671
671
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
672
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-3.143-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
672
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-3.192-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
673
673
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
674
674
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
675
675
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -167,6 +167,8 @@ module Kettle
167
167
  append_streamed_output_summary(lines, result) unless result.ok?
168
168
  elsif template_event_stdout?(result)
169
169
  append_template_event_failure_summary(lines, result.stdout) unless result.ok?
170
+ elsif release_event_stdout?(result)
171
+ append_release_event_failure_summary(lines, result.stdout) unless result.ok?
170
172
  else
171
173
  append_indented_output(lines, result.stdout)
172
174
  end
@@ -180,6 +182,10 @@ module Kettle
180
182
  command == "template" && result.phase == "template" && template_events(result.stdout).any?
181
183
  end
182
184
 
185
+ def release_event_stdout?(result)
186
+ command == "release" && result.phase.to_s.start_with?("release_") && template_events(result.stdout).any?
187
+ end
188
+
183
189
  def output_streamed?(result)
184
190
  result.respond_to?(:output_streamed?) && result.output_streamed?
185
191
  end
@@ -217,6 +223,22 @@ module Kettle
217
223
  lines << " template event stream omitted from text report"
218
224
  end
219
225
 
226
+ def append_release_event_failure_summary(lines, output)
227
+ events = template_events(output)
228
+ diagnostics = events.filter_map do |event|
229
+ next unless event["type"] == "diagnostic"
230
+
231
+ event["message"].to_s.empty? ? event["kind"].to_s : event["message"].to_s
232
+ end.uniq
233
+ summary = events.reverse.find { |event| event["type"] == "summary" }
234
+ diagnostics.each { |message| lines << " diagnostic: #{message}" unless message.empty? }
235
+ if summary
236
+ detail = [summary["status"], summary["error_message"]].map(&:to_s).reject(&:empty?).join(": ")
237
+ lines << " summary: #{detail}" unless detail.empty?
238
+ end
239
+ lines << " release event stream omitted from text report"
240
+ end
241
+
220
242
  def append_template_summary(lines)
221
243
  template_results = results.select { |result| result.phase == "template" }
222
244
  return if template_results.empty?
@@ -3,7 +3,7 @@
3
3
  module Kettle
4
4
  module Family
5
5
  module Version
6
- VERSION = "1.1.4"
6
+ VERSION = "1.1.5"
7
7
  end
8
8
  VERSION = Version::VERSION # Traditional Constant Location
9
9
  end
@@ -498,7 +498,8 @@ module Kettle
498
498
  phase: release_phase,
499
499
  command: release_command,
500
500
  env: release_env,
501
- interactive: release_command_interactive?
501
+ interactive: release_command_interactive?,
502
+ stdout_line_handler: release_event_line_handler(member, progress: progress)
502
503
  )
503
504
  emit_member_result_progress(member, memo.last, progress: progress)
504
505
  return memo unless memo.last.ok?
@@ -803,6 +804,7 @@ module Kettle
803
804
  args << "--local-ci" if local_ci
804
805
  args << "--skip-bundle-audit" if skip_bundle_audit
805
806
  args << "--skip-remotes=#{skip_remotes}" if skip_remotes && !skip_remotes.to_s.empty?
807
+ args << "--events" unless command_includes_arg?(command, "--events")
806
808
  return command if args.empty?
807
809
 
808
810
  command.is_a?(Array) ? [*command, *args] : "#{command} #{args.join(" ")}"
@@ -1228,6 +1230,22 @@ module Kettle
1228
1230
  end
1229
1231
  end
1230
1232
 
1233
+ def release_event_line_handler(member, progress: nil)
1234
+ return nil unless progress_io
1235
+ return nil unless verbose || debug || progress&.tty?
1236
+
1237
+ lambda do |line|
1238
+ event = parse_template_event(line)
1239
+ next unless event
1240
+
1241
+ if verbose || debug
1242
+ emit_release_event_progress(member, event)
1243
+ else
1244
+ emit_release_event_status(member, event, progress: progress)
1245
+ end
1246
+ end
1247
+ end
1248
+
1231
1249
  def parse_template_event(line)
1232
1250
  payload = JSON.parse(line.to_s)
1233
1251
  (payload.is_a?(Hash) && payload["event_version"]) ? payload : nil
@@ -1274,6 +1292,51 @@ module Kettle
1274
1292
  progress&.update(member, status: status, mark: mark) if status && !status.empty?
1275
1293
  end
1276
1294
 
1295
+ def emit_release_event_progress(member, event)
1296
+ case event["type"]
1297
+ when "run_start"
1298
+ emit_template_event_line(member, ">", "release")
1299
+ when "command_step"
1300
+ label = [event["phase"], event["name"]].map(&:to_s).reject(&:empty?).join(":")
1301
+ emit_template_event_line(member, template_event_mark(event), label)
1302
+ when "diagnostic"
1303
+ message = event["message"].to_s
1304
+ label = message.empty? ? event["kind"].to_s : message
1305
+ emit_template_event_line(member, "!", label)
1306
+ when "summary"
1307
+ emit_template_event_line(member, phase_finish_event_mark(event), event["status"].to_s)
1308
+ end
1309
+ end
1310
+
1311
+ def emit_release_event_status(member, event, progress:)
1312
+ status = case event["type"]
1313
+ when "run_start"
1314
+ "release"
1315
+ when "command_step"
1316
+ [event["phase"], event["name"]].map(&:to_s).reject(&:empty?).join(":")
1317
+ when "diagnostic"
1318
+ message = event["message"].to_s
1319
+ message.empty? ? event["kind"].to_s : message
1320
+ when "summary"
1321
+ event["status"].to_s
1322
+ end
1323
+ mark = release_event_status_mark(event)
1324
+ progress&.update(member, status: status, mark: mark) if status && !status.empty?
1325
+ end
1326
+
1327
+ def release_event_status_mark(event)
1328
+ case event["type"]
1329
+ when "run_start"
1330
+ ">"
1331
+ when "command_step"
1332
+ template_event_mark(event)
1333
+ when "diagnostic"
1334
+ "!"
1335
+ when "summary"
1336
+ phase_finish_event_mark(event)
1337
+ end
1338
+ end
1339
+
1277
1340
  def template_event_status_mark(event)
1278
1341
  case event["type"]
1279
1342
  when "phase_start"
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: 1.1.4
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -210,7 +210,7 @@ dependencies:
210
210
  version: '3.2'
211
211
  - - ">="
212
212
  - !ruby/object:Gem::Version
213
- version: 3.2.0
213
+ version: 3.2.1
214
214
  type: :development
215
215
  prerelease: false
216
216
  version_requirements: !ruby/object:Gem::Requirement
@@ -220,7 +220,7 @@ dependencies:
220
220
  version: '3.2'
221
221
  - - ">="
222
222
  - !ruby/object:Gem::Version
223
- version: 3.2.0
223
+ version: 3.2.1
224
224
  - !ruby/object:Gem::Dependency
225
225
  name: ruby-progressbar
226
226
  requirement: !ruby/object:Gem::Requirement
@@ -319,10 +319,10 @@ licenses:
319
319
  - AGPL-3.0-only
320
320
  metadata:
321
321
  homepage_uri: https://kettle-family.galtzo.com
322
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.1.4
323
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.1.4/CHANGELOG.md
322
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.1.5
323
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.1.5/CHANGELOG.md
324
324
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
325
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.1.4
325
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.1.5
326
326
  funding_uri: https://github.com/sponsors/pboling
327
327
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
328
328
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file