kettle-family 1.2.4 → 1.2.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: da7381b4cfaa486889d244554f6b1fda061e61a0425f0c9bcb6d16d1e0193618
4
- data.tar.gz: 57d3827d32081abf403728035aed2b58c2aba097ee726b5ddf2de87cc3f3982e
3
+ metadata.gz: 647d4190c3f92dec7b283cbf0387c55de94c1a1afcd8a78763c4c350c9e79aa9
4
+ data.tar.gz: a21e3ef8879e7554e86d13583788da7d2e648e747dd1ade543cb00b3da7ab3dc
5
5
  SHA512:
6
- metadata.gz: 8dd7fd4a57106d5dd7b542e619d36fb8de0cdebbcd4678be1cf1257b69b046c1743ec8b52cb32eb5f13b7a802c71fc08e0df7233f7c7c6ea180bf0fed9c6b945
7
- data.tar.gz: 8f691261815c402a0d2264778b39b8effd298850502c6e12bd2a68b05ac2bbe35185e8a2bd856997136b27c507a1c5318065d1efd4271e8de349a997c7d1a592
6
+ metadata.gz: 31160e4f6125dd16a427077380c66bf5ae0ed8e7661808c0630200ca1015ec9966e9d3c0c0804b4dab457fed2228116f3a533459fe77d57c77bc92bade2c8250
7
+ data.tar.gz: f2d6d7b03a6b89049dd34b59241546922066cf08dea7a41f609dc03b702d9a210b357b13373a5847f788848f585f30d92f0c979af4bc74a5cf63e4a21f4a8b11
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
+ ## [1.2.5] - 2026-07-29
34
+
35
+ - TAG: [v1.2.5][1.2.5t]
36
+ - COVERAGE: 94.00% -- 3649/3882 lines in 27 files
37
+ - BRANCH COVERAGE: 76.43% -- 1391/1820 branches in 27 files
38
+ - 28.01% documented
39
+
40
+ ### Fixed
41
+
42
+ - `kettle-family template` now defers `kettle-jem` bootstrap commits for
43
+ executed monorepo templating and runs a serialized member-scoped
44
+ `commit_template` phase, avoiding parallel `.git/index.lock` races when many
45
+ members share one Git repository.
46
+
47
+ - kettle-jem-template-20260730-001 - Gemspec package file enumeration now runs
48
+ relative to the gemspec directory, so packaged template assets are included
49
+ even when the gemspec is loaded from another working directory.
50
+
33
51
  ## [1.2.4] - 2026-07-29
34
52
 
35
53
  - TAG: [v1.2.4][1.2.4t]
@@ -1251,7 +1269,9 @@ Please file a bug if you notice a violation of semantic versioning.
1251
1269
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
1252
1270
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
1253
1271
 
1254
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.4...HEAD
1272
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.5...HEAD
1273
+ [1.2.5]: https://github.com/kettle-dev/kettle-family/compare/v1.2.4...v1.2.5
1274
+ [1.2.5t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.5
1255
1275
  [1.2.4]: https://github.com/kettle-dev/kettle-family/compare/v1.2.3...v1.2.4
1256
1276
  [1.2.4t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.4
1257
1277
  [1.2.3]: https://github.com/kettle-dev/kettle-family/compare/v1.2.2...v1.2.3
data/README.md CHANGED
@@ -814,7 +814,7 @@ Thanks for RTFM. ☺️
814
814
  [📌gitmoji]: https://gitmoji.dev
815
815
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
816
816
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
817
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-3.864-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
817
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-3.882-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
818
818
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
819
819
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
820
820
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "1.2.4"
8
+ VERSION = "1.2.5"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -265,6 +265,8 @@ module Kettle
265
265
 
266
266
  normalize_lockfiles(member: member, runner: runner, memo: memo, phase: "normalize_lockfiles")
267
267
  emit_member_result_progress(member, memo.last, progress: progress)
268
+ commit_template_changes(member: member, runner: runner, memo: memo)
269
+ emit_member_result_progress(member, memo.last, progress: progress) if memo.last&.phase == "commit_template"
268
270
  ensure
269
271
  template_result = memo.find { |result| result.phase == "template" } || memo.last
270
272
  if template_result
@@ -1348,7 +1350,7 @@ module Kettle
1348
1350
  end
1349
1351
 
1350
1352
  def append_template_skip_commit(command_text)
1351
- return command_text if commit
1353
+ return command_text unless template_skip_commit?(command_text)
1352
1354
  return command_text if command_text.is_a?(Array) && command_text.include?("--skip-commit")
1353
1355
  return [*command_text, "--skip-commit"] if command_text.is_a?(Array)
1354
1356
  return command_text if command_text.include?("--skip-commit")
@@ -1356,6 +1358,15 @@ module Kettle
1356
1358
  "#{command_text} --skip-commit"
1357
1359
  end
1358
1360
 
1361
+ def template_skip_commit?(command_text)
1362
+ !commit || deferred_monorepo_template_commit?(command_text: command_text)
1363
+ end
1364
+
1365
+ def deferred_monorepo_template_commit?(member = nil, command_text: nil)
1366
+ command_text ||= config.template_command || (member ? default_template_command(member) : DEFAULT_COMMANDS.fetch("template"))
1367
+ execute && commit && monorepo_template? && kettle_jem_template_command?(command_text)
1368
+ end
1369
+
1359
1370
  def default_template_command(member)
1360
1371
  return DEFAULT_COMMANDS.fetch("template") if templating_bundle_wired?(member)
1361
1372
 
@@ -1481,6 +1492,7 @@ module Kettle
1481
1492
  total = 1
1482
1493
  total += 2 if config.normalize_lockfiles?
1483
1494
  total += 1 if member.nil? || template_prepares_dependencies?(member)
1495
+ total += 1 if deferred_monorepo_template_commit?(member)
1484
1496
  total
1485
1497
  end
1486
1498
 
@@ -1865,6 +1877,35 @@ module Kettle
1865
1877
  result.ok?
1866
1878
  end
1867
1879
 
1880
+ def commit_template_changes(member:, runner:, memo:)
1881
+ return unless deferred_monorepo_template_commit?(member)
1882
+ return unless memo.all?(&:ok?)
1883
+
1884
+ synchronize_template_commit do
1885
+ memo << runner.call(
1886
+ member: member,
1887
+ phase: "commit_template",
1888
+ command: [
1889
+ "sh",
1890
+ "-lc",
1891
+ "if [ -n \"$(git status --porcelain -- .)\" ]; then " \
1892
+ "git add -A -- . && git commit -m #{Shellwords.escape(template_commit_message(member))}; " \
1893
+ "fi"
1894
+ ],
1895
+ env: workflow_env
1896
+ )
1897
+ end
1898
+ end
1899
+
1900
+ def template_commit_message(member)
1901
+ "🎨 Template #{member.name} by kettle-family"
1902
+ end
1903
+
1904
+ def synchronize_template_commit(&block)
1905
+ @template_commit_mutex ||= Mutex.new
1906
+ @template_commit_mutex.synchronize(&block)
1907
+ end
1908
+
1868
1909
  def template_prepare_env
1869
1910
  env = workflow_env
1870
1911
  family_env_name = config.family_local_path_env_name
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.2.4
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -341,10 +341,10 @@ licenses:
341
341
  - AGPL-3.0-only
342
342
  metadata:
343
343
  homepage_uri: https://kettle-family.galtzo.com
344
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.4
345
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.4/CHANGELOG.md
344
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.5
345
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.5/CHANGELOG.md
346
346
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
347
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.4
347
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.5
348
348
  funding_uri: https://github.com/sponsors/pboling
349
349
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
350
350
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file