kettle-family 1.1.2 → 1.1.3

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: 6f2a527e367e47a13641c5751ea451974557403e1fd151e8ad078e1992af8b63
4
- data.tar.gz: 4f743947c7c3b8186155424fca034069d77486cf55f5e51a913d5820bfd89988
3
+ metadata.gz: 53651b9cbe7d3c64eda1e0f80785d000d4e23823889c74f659e4bcd2edfffa81
4
+ data.tar.gz: b78bb0de6265e03f946d49af2421fc40c725cf58b8979c3268e668d7d83c7792
5
5
  SHA512:
6
- metadata.gz: 82f9f02ece163d4ce7085f29c891e9168351415ddbe248d6b08fa94166099360591932d43251a4da7f988ed315d10d96d376204ba976accdd51681923adc0348
7
- data.tar.gz: f7798e9930b29538480a74d435a40a3fb0ac2d594908e68518fe6f1eb6efdd89bab10748a200de04fb0911a5fb0b007dc4a4513b893518d73e88a60d971e820f
6
+ metadata.gz: '0087aedaeb1a08c30c980bbe9a30fd49810fe17455be5dff10889977d355fab85d09246a5f9666759fbd715d735c26ab117755cec4103a663bba67315ed8aaf2'
7
+ data.tar.gz: 524612b74a7af22d90bb5661c8a18ae40bdee325faee1d61cbe738ad3d8b589e969d7b74e5b30bba9807284fd23919eeb2d4daa23bf46d1c2e116ef4b45ffff3
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,20 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.1.3] - 2026-07-23
34
+
35
+ - TAG: [v1.1.3][1.1.3t]
36
+ - COVERAGE: 94.44% -- 2987/3163 lines in 25 files
37
+ - BRANCH COVERAGE: 76.40% -- 1078/1411 branches in 25 files
38
+ - 28.68% documented
39
+
40
+ ### Fixed
41
+
42
+ - No-config single-member templating no longer injects a synthetic family-local
43
+ path environment pointing at the member root.
44
+ - Template and release progress now keep each member locked to its own TTY row
45
+ while parallel workers report events out of order.
46
+
33
47
  ## [1.1.2] - 2026-07-23
34
48
 
35
49
  - TAG: [v1.1.2][1.1.2t]
@@ -937,7 +951,9 @@ Please file a bug if you notice a violation of semantic versioning.
937
951
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
938
952
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
939
953
 
940
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.1.2...HEAD
954
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.1.3...HEAD
955
+ [1.1.3]: https://github.com/kettle-dev/kettle-family/compare/v1.1.2...v1.1.3
956
+ [1.1.3t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.1.3
941
957
  [1.1.2]: https://github.com/kettle-dev/kettle-family/compare/v1.1.1...v1.1.2
942
958
  [1.1.2t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.1.2
943
959
  [1.1.1]: https://github.com/kettle-dev/kettle-family/compare/v1.1.0...v1.1.1
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.136-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
672
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-3.163-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
@@ -3,7 +3,7 @@
3
3
  module Kettle
4
4
  module Family
5
5
  module Version
6
- VERSION = "1.1.2"
6
+ VERSION = "1.1.3"
7
7
  end
8
8
  VERSION = Version::VERSION # Traditional Constant Location
9
9
  end
@@ -1096,7 +1096,7 @@ module Kettle
1096
1096
 
1097
1097
  def workflow_env
1098
1098
  {}.tap do |env|
1099
- env.merge!(config.family_local_path_env)
1099
+ env.merge!(workflow_family_local_path_env)
1100
1100
  if command == "template"
1101
1101
  env["KETTLE_JEM_TEMPLATE_PROFILE"] = config.template_profile if config.template_profile
1102
1102
  env["KJ_REPOSITORY_TOPOLOGY"] = config.template_repository_topology if config.template_repository_topology
@@ -1115,6 +1115,24 @@ module Kettle
1115
1115
  end
1116
1116
  end
1117
1117
 
1118
+ def workflow_family_local_path_env
1119
+ return {} if implicit_single_member_template_root?
1120
+
1121
+ config.family_local_path_env
1122
+ end
1123
+
1124
+ def implicit_single_member_template_root?
1125
+ return false unless command == "template"
1126
+ return false if config.path
1127
+ return false unless config.family_mode == "monorepo"
1128
+ return false unless members.one?
1129
+ return false unless File.expand_path(config.members_root) == File.expand_path(config.root)
1130
+ return false unless File.expand_path(members.first.root) == File.expand_path(config.root)
1131
+
1132
+ family_env_name = config.family_local_path_env_name
1133
+ family_env_name && !env_overrides.key?(family_env_name)
1134
+ end
1135
+
1118
1136
  def command_env
1119
1137
  return bundle_update_env if %w[bup bupb].include?(command)
1120
1138
 
@@ -1160,7 +1178,8 @@ module Kettle
1160
1178
  io: progress_io,
1161
1179
  label: "templating",
1162
1180
  total: workflow_members.length,
1163
- jobs: template_jobs(workflow_members)
1181
+ jobs: template_jobs(workflow_members),
1182
+ members: workflow_members
1164
1183
  )
1165
1184
  progress.start
1166
1185
  progress
@@ -1171,7 +1190,8 @@ module Kettle
1171
1190
  io: progress_io,
1172
1191
  label: release_progress_label,
1173
1192
  total: release_members.length,
1174
- jobs: release_jobs(release_members)
1193
+ jobs: release_jobs(release_members),
1194
+ members: release_members
1175
1195
  )
1176
1196
  progress.start
1177
1197
  progress
@@ -8,24 +8,34 @@ module Kettle
8
8
  FORMAT = "%<member>-24s :events :status"
9
9
  EVENT_WIDTH = 30
10
10
 
11
- def initialize(io:, label:, total:, jobs:, enabled: true)
11
+ def initialize(io:, label:, total:, jobs:, members: [], enabled: true)
12
12
  @io = io
13
13
  @label = label
14
14
  @total = total.to_i
15
15
  @jobs = jobs.to_i
16
16
  @enabled = enabled && !!io
17
17
  @bars = {}
18
+ @line_order = members.map(&:name)
19
+ @started = false
20
+ @stopped = false
18
21
  @member_totals = {}
19
22
  @member_events = Hash.new("")
23
+ @member_statuses = Hash.new("")
20
24
  @mutex = Mutex.new
21
25
  @tty = @enabled && io.respond_to?(:tty?) && io.tty?
22
- @multibar = @tty ? TTY::ProgressBar::Multi.new(output: io) : nil
26
+ @multibar = @tty ? TTY::ProgressBar::Multi.new(output: io, frequency: 0) : nil
23
27
  end
24
28
 
25
29
  def start
26
30
  return unless @enabled
27
31
 
28
- write_line("#{@label} #{@total} member#{plural(@total)} with #{@jobs} job#{plural(@jobs)}:")
32
+ synchronize do
33
+ next if @started
34
+
35
+ write_line("#{@label} #{@total} member#{plural(@total)} with #{@jobs} job#{plural(@jobs)}:")
36
+ @started = true
37
+ @line_order.each { |member_name| render_name(member_name, status: "") } if @tty
38
+ end
29
39
  end
30
40
 
31
41
  def start_member(member, total:, status:)
@@ -84,7 +94,12 @@ module Kettle
84
94
  def stop
85
95
  return unless @enabled
86
96
 
87
- synchronize { @multibar&.stop }
97
+ synchronize do
98
+ next if @stopped
99
+
100
+ @multibar&.stop
101
+ @stopped = true
102
+ end
88
103
  end
89
104
 
90
105
  def tty?
@@ -103,7 +118,7 @@ module Kettle
103
118
  private
104
119
 
105
120
  def render(member, status:)
106
- bar_for(member).advance(0, events: event_tape(member), status: status)
121
+ render_name(member.name, status: status)
107
122
  end
108
123
 
109
124
  def append_event(member, mark)
@@ -116,8 +131,18 @@ module Kettle
116
131
  @member_events[member.name].rjust(EVENT_WIDTH)
117
132
  end
118
133
 
119
- def bar_for(member)
120
- @bars[member.name] ||= @multibar.register(Kernel.format(FORMAT, member: member.name), total: nil)
134
+ def render_name(member_name, status:)
135
+ @member_statuses[member_name] = status
136
+ @line_order << member_name unless @line_order.include?(member_name)
137
+ bar_for(member_name).advance(
138
+ 0,
139
+ events: @member_events[member_name].rjust(EVENT_WIDTH),
140
+ status: @member_statuses[member_name]
141
+ )
142
+ end
143
+
144
+ def bar_for(member_name)
145
+ @bars[member_name] ||= @multibar.register(Kernel.format(FORMAT, member: member_name), total: nil)
121
146
  end
122
147
 
123
148
  def plural(count)
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.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -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.2
323
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.1.2/CHANGELOG.md
322
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.1.3
323
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.1.3/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.2
325
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.1.3
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