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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +24 -1
- data/README.md +1 -1
- data/lib/kettle/family/report.rb +22 -0
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +64 -1
- data.tar.gz.sig +0 -0
- metadata +6 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 982720b995ca0f74423a382c1e46d8f8b9fe27570dcc2f4d5bf157f14622276c
|
|
4
|
+
data.tar.gz: 942038041794d1744e68342280b457457de52c41f8ce2558bd568b8ebb429ca1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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.
|
|
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
|
data/lib/kettle/family/report.rb
CHANGED
|
@@ -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?
|
|
@@ -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
|
+
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.
|
|
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.
|
|
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.
|
|
323
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.1.
|
|
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.
|
|
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
|