kettle-family 0.1.13 → 0.1.14

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: a3c5233f8223ab84157bd218613782a68b6d86073276611f5f48efcf399b3f7d
4
- data.tar.gz: f96d4584d39c94b5956722d776d27309cdaad86779ebf4a522e47c5c42fe395d
3
+ metadata.gz: 3b6e08799214b00e8f52b6860bc7b08d60388cf9d432d25570af4cfc4366b54c
4
+ data.tar.gz: 241f806e20a77c405ceb783b9a9e3e957d85d37d7d670e9e9528e91df69f09af
5
5
  SHA512:
6
- metadata.gz: c6c40b482098bf7af4668965740cb643b7a4256efefc5398ec8c85071d1eec03a779317aa9c8121f9fc517e0beea3ae090318027d1ed61e940870b00e8199461
7
- data.tar.gz: 0661b72077e5f25d7c8b7029accc11d56e8e459e2e060b3a394514b70bacdc92d69b43b5ce51eec88665a1046662c4d1f0bede30ed076a7e9f54825d0d1ed676
6
+ metadata.gz: a6a8c0facd2448af40324cdf3f4ffe7c17dffb57187b8919dffdb3c078a1424d0d5cf36b3c34b2227af9ff24ca79a0941661ced826190fd6f1ba5340d9746973
7
+ data.tar.gz: 7b40ab91662c6f755e055ec54edc435a9617ed9569cb5de755300e77834e76c03e620aadf0dcfc7a4f6d59e83173e25847daaab650cc343082fdac2e4f826fcb
checksums.yaml.gz.sig CHANGED
@@ -1,2 +1,2 @@
1
- >�C�#,j�ɞ� � V���hS�P����E?-ce� ��z�?�1���u�;��x��܆&O�Æ����f����B�z�����d��q�� �;�P�� W�L�d[��H����$��B��,����'E
2
- (j���2�Q��R�yq /�M�j�<���TN�>������B�Y�7z��Y����S^Ŷ��~���߈�/�Z�y&{&)B#��)v�hr��[�s�ƥY�1�_
1
+ mwz�Fu,�j��b��hȓ�P��{�����=/�XDQ
2
+ �ML��H�تg�
data/CHANGELOG.md CHANGED
@@ -35,6 +35,11 @@ Please file a bug if you notice a violation of semantic versioning.
35
35
  - `kettle-family bump-version` now leaves non-exact family dependency
36
36
  requirements unchanged instead of rejecting them as ambiguous, allowing
37
37
  families with loose inter-gem constraints to use relative version bumps.
38
+ - `kettle-family bump-version --execute` now reports actual writes as
39
+ `updated`, includes each member's `current -> target` version change, commits
40
+ version bump edits, and uses member-local branch target stacks so branch
41
+ traversal can continue safely.
42
+ - Text reports now indent each line of multi-line command output consistently.
38
43
 
39
44
  ### Security
40
45
 
@@ -186,6 +186,7 @@ module Kettle
186
186
 
187
187
  def command_results(command:, config:, members:, options:)
188
188
  return branch_target_command_results(command: command, config: config, members: members, options: options) if branch_target_command?(command, config)
189
+ return member_local_branch_target_command_results(command: command, config: config, members: members, options: options) if member_local_branch_target_command?(command, config, members)
189
190
 
190
191
  command_results_for_current_branch(command: command, config: config, members: members, options: options)
191
192
  end
@@ -224,6 +225,13 @@ module Kettle
224
225
  !WORKFLOW_COMMANDS.include?(command)
225
226
  end
226
227
 
228
+ def member_local_branch_target_command?(command, config, members)
229
+ return false if !config.release_target_branches.empty?
230
+ return false unless command == "bump-version"
231
+
232
+ members.any? { |member| member_local_release_config(member: member, config: config) }
233
+ end
234
+
227
235
  def branch_target_command_results(command:, config:, members:, options:)
228
236
  runner = CommandRunner.new(execute: options[:execute])
229
237
  selected_names = members.map(&:name)
@@ -245,6 +253,33 @@ module Kettle
245
253
  end
246
254
  end
247
255
 
256
+ def member_local_branch_target_command_results(command:, config:, members:, options:)
257
+ runner = CommandRunner.new(execute: options[:execute])
258
+ members.each_with_object([]) do |member, memo|
259
+ member_config = member_local_release_config(member: member, config: config)
260
+ unless member_config
261
+ memo.concat(command_results_for_current_branch(command: command, config: config, members: [member], options: options))
262
+ break memo unless memo.last&.ok?
263
+ next
264
+ end
265
+
266
+ member_config.release_target_branches.each do |branch|
267
+ memo << runner.call(
268
+ member: member,
269
+ phase: "release_checkout",
270
+ command: ["git", "checkout", branch]
271
+ )
272
+ break unless memo.last.ok?
273
+
274
+ branch_members = rediscovered_selected_members(config: member_config, selected_names: [member.name], command: command)
275
+ branch_members = [member] if branch_members.empty?
276
+ memo.concat(command_results_for_current_branch(command: command, config: member_config, members: branch_members, options: options))
277
+ break unless memo.last&.ok?
278
+ end
279
+ break memo unless memo.last&.ok?
280
+ end
281
+ end
282
+
248
283
  def rediscovered_selected_members(config:, selected_names:, command:)
249
284
  discovered = Discovery.new(config: config).members
250
285
  ordered = (command == "install") ? install_order(discovered, config) : Orderer.new(members: discovered, mode: config.order_mode, hints: config.order_hints).ordered
@@ -271,12 +306,28 @@ module Kettle
271
306
  end
272
307
 
273
308
  def bump_version_results(members:, options:)
274
- VersionBump.new(
309
+ results = VersionBump.new(
275
310
  members: members,
276
311
  target_version: options[:target_version],
277
312
  from_version: options[:from_version],
278
313
  mode: bump_version_mode(options)
279
314
  ).results
315
+ return results if options[:check] || !options[:commit]
316
+ return results unless results.all?(&:ok?)
317
+
318
+ runner = CommandRunner.new(execute: options[:execute])
319
+ members.each_with_object(results) do |member, memo|
320
+ memo << runner.call(
321
+ member: member,
322
+ phase: "commit_version_bump",
323
+ command: [
324
+ "sh",
325
+ "-lc",
326
+ "if ! git diff --quiet -- '*.gemspec' 'lib/**/version.rb'; then git add -- '*.gemspec' 'lib/**/version.rb' && git commit -m '🔖 Bump gem version'; fi"
327
+ ]
328
+ )
329
+ break memo unless memo.last.ok?
330
+ end
280
331
  end
281
332
 
282
333
  def add_changelog_results(members:, options:)
@@ -77,12 +77,16 @@ module Kettle
77
77
  lines << "results:"
78
78
  results.each do |result|
79
79
  lines << " #{result_state(result)} #{result.member_name} #{result.phase} #{result.reason || ""}".rstrip
80
- lines << " #{result.stdout}" unless result.stdout.to_s.empty?
81
- lines << " #{result.stderr}" if !result.ok? && !result.stderr.to_s.empty?
80
+ append_indented_output(lines, result.stdout) unless result.stdout.to_s.empty?
81
+ append_indented_output(lines, result.stderr) if !result.ok? && !result.stderr.to_s.empty?
82
82
  lines << " resume: #{resume_hint_for(result)}" unless result.ok?
83
83
  end
84
84
  end
85
85
 
86
+ def append_indented_output(lines, output)
87
+ output.to_s.each_line(chomp: true) { |line| lines << " #{line}" }
88
+ end
89
+
86
90
  def append_member_release_targets(lines)
87
91
  return if member_release_target_branches.empty?
88
92
 
@@ -3,7 +3,7 @@
3
3
  module Kettle
4
4
  module Family
5
5
  module Version
6
- VERSION = "0.1.13"
6
+ VERSION = "0.1.14"
7
7
  end
8
8
  VERSION = Version::VERSION # Traditional Constant Location
9
9
  end
@@ -45,7 +45,7 @@ module Kettle
45
45
  workdir: member.root,
46
46
  status: check_failed?(edits) ? 1 : 0,
47
47
  success: !check_failed?(edits),
48
- stdout: edit_summary(edits),
48
+ stdout: edit_summary(member: member, target_version: member_target_version, edits: edits),
49
49
  stderr: "",
50
50
  elapsed_seconds: 0.0,
51
51
  skipped: mode == :dry_run,
@@ -220,10 +220,13 @@ module Kettle
220
220
  end
221
221
  end
222
222
 
223
- def edit_summary(edits)
224
- return "no version changes needed" if edits.empty?
223
+ def edit_summary(member:, target_version:, edits:)
224
+ lines = ["#{member.version} -> #{target_version}"]
225
+ return [*lines, "no version changes needed"].join("\n") if edits.empty?
225
226
 
226
- edits.map { |edit| "would update #{edit.fetch(:path)}" }.uniq.join("\n")
227
+ verb = (mode == :execute) ? "updated" : "would update"
228
+ lines.concat(edits.map { |edit| "#{verb} #{edit.fetch(:path)}" }.uniq)
229
+ lines.join("\n")
227
230
  end
228
231
  end
229
232
  end
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.13
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -309,10 +309,10 @@ licenses:
309
309
  - AGPL-3.0-only
310
310
  metadata:
311
311
  homepage_uri: https://kettle-family.galtzo.com
312
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.1.13
313
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.1.13/CHANGELOG.md
312
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.1.14
313
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.1.14/CHANGELOG.md
314
314
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
315
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.1.13
315
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.1.14
316
316
  funding_uri: https://github.com/sponsors/pboling
317
317
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
318
318
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file