kettle-family 1.2.4 → 1.2.6

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: 87022fba999d5343044afcf1c679be7b53f49648ce71ff7aebfe29044ee6064a
4
+ data.tar.gz: 775df5e0ce6843e9013fbe7a4cc17ea2608322aae8139f9116f51a456051a5b8
5
5
  SHA512:
6
- metadata.gz: 8dd7fd4a57106d5dd7b542e619d36fb8de0cdebbcd4678be1cf1257b69b046c1743ec8b52cb32eb5f13b7a802c71fc08e0df7233f7c7c6ea180bf0fed9c6b945
7
- data.tar.gz: 8f691261815c402a0d2264778b39b8effd298850502c6e12bd2a68b05ac2bbe35185e8a2bd856997136b27c507a1c5318065d1efd4271e8de349a997c7d1a592
6
+ metadata.gz: 258275ea92c47f043220780188c6967427e700bf66f7e8675700ac39d4ffb4a7da775a809a587babfa839f32778bc81e4b525f2f33f839648cf11be1be1b239c
7
+ data.tar.gz: ec9fd4d7a541edd9f82b4bb9e57510563f264b5893734814c27a6eae24f3af4ca05fbd80baa1986de388ab6a4b83daa4bbfafae3117bf748693fe50a2261a2d3
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,31 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.2.6] - 2026-07-29
34
+
35
+ - TAG: [v1.2.6][1.2.6t]
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
+ ## [1.2.5] - 2026-07-29
41
+
42
+ - TAG: [v1.2.5][1.2.5t]
43
+ - COVERAGE: 94.00% -- 3649/3882 lines in 27 files
44
+ - BRANCH COVERAGE: 76.43% -- 1391/1820 branches in 27 files
45
+ - 28.01% documented
46
+
47
+ ### Fixed
48
+
49
+ - `kettle-family template` now defers `kettle-jem` bootstrap commits for
50
+ executed monorepo templating and runs a serialized member-scoped
51
+ `commit_template` phase, avoiding parallel `.git/index.lock` races when many
52
+ members share one Git repository.
53
+
54
+ - kettle-jem-template-20260730-001 - Gemspec package file enumeration now runs
55
+ relative to the gemspec directory, so packaged template assets are included
56
+ even when the gemspec is loaded from another working directory.
57
+
33
58
  ## [1.2.4] - 2026-07-29
34
59
 
35
60
  - TAG: [v1.2.4][1.2.4t]
@@ -1251,7 +1276,11 @@ Please file a bug if you notice a violation of semantic versioning.
1251
1276
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
1252
1277
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
1253
1278
 
1254
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.4...HEAD
1279
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.6...HEAD
1280
+ [1.2.6]: https://github.com/kettle-dev/kettle-family/compare/v1.2.5...v1.2.6
1281
+ [1.2.6t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.6
1282
+ [1.2.5]: https://github.com/kettle-dev/kettle-family/compare/v1.2.4...v1.2.5
1283
+ [1.2.5t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.5
1255
1284
  [1.2.4]: https://github.com/kettle-dev/kettle-family/compare/v1.2.3...v1.2.4
1256
1285
  [1.2.4t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.4
1257
1286
  [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.6"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -132,6 +132,7 @@ module Kettle
132
132
  @bex_args = bex_args
133
133
  @start_member = start_member
134
134
  @start_branch = start_branch
135
+ @template_commit_mutex = Mutex.new
135
136
  end
136
137
 
137
138
  def results
@@ -265,6 +266,8 @@ module Kettle
265
266
 
266
267
  normalize_lockfiles(member: member, runner: runner, memo: memo, phase: "normalize_lockfiles")
267
268
  emit_member_result_progress(member, memo.last, progress: progress)
269
+ commit_template_changes(member: member, runner: runner, memo: memo)
270
+ emit_member_result_progress(member, memo.last, progress: progress) if memo.last&.phase == "commit_template"
268
271
  ensure
269
272
  template_result = memo.find { |result| result.phase == "template" } || memo.last
270
273
  if template_result
@@ -1348,7 +1351,7 @@ module Kettle
1348
1351
  end
1349
1352
 
1350
1353
  def append_template_skip_commit(command_text)
1351
- return command_text if commit
1354
+ return command_text unless template_skip_commit?(command_text)
1352
1355
  return command_text if command_text.is_a?(Array) && command_text.include?("--skip-commit")
1353
1356
  return [*command_text, "--skip-commit"] if command_text.is_a?(Array)
1354
1357
  return command_text if command_text.include?("--skip-commit")
@@ -1356,6 +1359,15 @@ module Kettle
1356
1359
  "#{command_text} --skip-commit"
1357
1360
  end
1358
1361
 
1362
+ def template_skip_commit?(command_text)
1363
+ !commit || deferred_monorepo_template_commit?(command_text: command_text)
1364
+ end
1365
+
1366
+ def deferred_monorepo_template_commit?(member = nil, command_text: nil)
1367
+ command_text ||= config.template_command || (member ? default_template_command(member) : DEFAULT_COMMANDS.fetch("template"))
1368
+ execute && commit && monorepo_template? && kettle_jem_template_command?(command_text)
1369
+ end
1370
+
1359
1371
  def default_template_command(member)
1360
1372
  return DEFAULT_COMMANDS.fetch("template") if templating_bundle_wired?(member)
1361
1373
 
@@ -1481,6 +1493,7 @@ module Kettle
1481
1493
  total = 1
1482
1494
  total += 2 if config.normalize_lockfiles?
1483
1495
  total += 1 if member.nil? || template_prepares_dependencies?(member)
1496
+ total += 1 if deferred_monorepo_template_commit?(member)
1484
1497
  total
1485
1498
  end
1486
1499
 
@@ -1865,6 +1878,34 @@ module Kettle
1865
1878
  result.ok?
1866
1879
  end
1867
1880
 
1881
+ def commit_template_changes(member:, runner:, memo:)
1882
+ return unless deferred_monorepo_template_commit?(member)
1883
+ return unless memo.all?(&:ok?)
1884
+
1885
+ synchronize_template_commit do
1886
+ memo << runner.call(
1887
+ member: member,
1888
+ phase: "commit_template",
1889
+ command: [
1890
+ "sh",
1891
+ "-lc",
1892
+ "if [ -n \"$(git status --porcelain -- .)\" ]; then " \
1893
+ "git add -A -- . && git commit -m #{Shellwords.escape(template_commit_message(member))}; " \
1894
+ "fi"
1895
+ ],
1896
+ env: workflow_env
1897
+ )
1898
+ end
1899
+ end
1900
+
1901
+ def template_commit_message(member)
1902
+ "🎨 Template #{member.name} by kettle-family"
1903
+ end
1904
+
1905
+ def synchronize_template_commit(&block)
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.6
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.6
345
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.6/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.6
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