kettle-family 1.2.37 → 1.2.38

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: 4ac267ede795f210291cb65f5a44cbc3176159e20eb4c3791cda61a8e80a9e34
4
- data.tar.gz: 6176b34ed826f1c9efba411954892d3c1d63ead38292c9c69555c53668ddbd80
3
+ metadata.gz: 5afd488c57e80c1850ca6be9157640cc28f0be2a6683f4d6bff7ab810ce63022
4
+ data.tar.gz: bdefdf06db747b5e161f9fa1a2aafe12cad0bb7d44b38609324a0f80861f635c
5
5
  SHA512:
6
- metadata.gz: fc3c5732806d5147dbac4725970dda7c3fc8dd8b630f0eaa232d712eb0c54afcf090f9ae949f7d34d417023a0fe74d8be3464cc34ceb73416324ecc980c773ac
7
- data.tar.gz: 765779cab4e8581a4c1db20a6fece06543c9b08600256f9ddf3b93018bd1f7c781a71c27683ca28c45581f888b161648a9ba8aae511058b899fb46b201c55e73
6
+ metadata.gz: db516f477f51c7cde438a750ee801aab0375bb519b9cee76d928d047937defbbd58667aa4e033ba8698ab075bda4cc1da1b1e243e0ccb84a20d592ada07f5522
7
+ data.tar.gz: b1081ca1abcf3a0599aeb2db5755c7c822aa66ed8b561425f731ba63758ff4fb1a9aaf6ed82bdd79d4c1445775e047e5e2eee02d698ddbdec61414c7dedce12c
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,21 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.2.38] - 2026-08-07
34
+
35
+ - TAG: [v1.2.38][1.2.38t]
36
+ - COVERAGE: 93.63% -- 5015/5356 lines in 32 files
37
+ - BRANCH COVERAGE: 76.07% -- 2000/2629 branches in 32 files
38
+ - 29.81% documented
39
+
40
+ ### Fixed
41
+
42
+ - Monorepo releases defer GitHub release creation to the family aggregate.
43
+
44
+ - Restrict aggregate monorepo GitHub releases to explicitly configured monorepo families.
45
+
46
+ - Exclude monorepo-only release orchestration from sibling-repository coverage accounting.
47
+
33
48
  ## [1.2.37] - 2026-08-07
34
49
 
35
50
  - TAG: [v1.2.37][1.2.37t]
@@ -1866,7 +1881,9 @@ Please file a bug if you notice a violation of semantic versioning.
1866
1881
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
1867
1882
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
1868
1883
 
1869
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.37...HEAD
1884
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.38...HEAD
1885
+ [1.2.38]: https://github.com/kettle-dev/kettle-family/compare/v1.2.37...v1.2.38
1886
+ [1.2.38t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.38
1870
1887
  [1.2.37]: https://github.com/kettle-dev/kettle-family/compare/v1.2.36...v1.2.37
1871
1888
  [1.2.37t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.37
1872
1889
  [1.2.36]: https://github.com/kettle-dev/kettle-family/compare/v1.2.35...v1.2.36
data/README.md CHANGED
@@ -837,7 +837,7 @@ Thanks for RTFM. ☺️
837
837
  [📌gitmoji]: https://gitmoji.dev
838
838
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
839
839
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
840
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.349-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
840
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.356-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
841
841
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
842
842
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
843
843
  [📄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.37"
8
+ VERSION = "1.2.38"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -400,7 +400,13 @@ module Kettle
400
400
  def current_branch_results(workflow_members)
401
401
  return check_results(workflow_members) if command == "check"
402
402
  return reset_member_results(workflow_members) if command == "reset"
403
- return release_member_results(workflow_members, include_family_changelog: true) if command == "release"
403
+ if command == "release"
404
+ results = release_member_results(workflow_members, include_family_changelog: true)
405
+ return results unless explicit_monorepo_mode? && results.all?(&:ok?)
406
+
407
+ results << aggregate_monorepo_github_release(workflow_members)
408
+ return results
409
+ end
404
410
  return git_sync_results(workflow_members) if GIT_SYNC_COMMANDS.key?(command)
405
411
 
406
412
  member_workflow_results(workflow_members)
@@ -1916,6 +1922,7 @@ module Kettle
1916
1922
  # live at the shared repository root.
1917
1923
  env["K_RELEASE_CI_ROOT"] = config.root
1918
1924
  env["K_RELEASE_CI_WORKFLOWS"] ||= "current.yml"
1925
+ env["KETTLE_RELEASE_SKIP_GITHUB_RELEASE"] = "true"
1919
1926
  end
1920
1927
  return env unless config.shared_changelog?
1921
1928
  if config.member_local_changelog?(member)
@@ -1936,6 +1943,63 @@ module Kettle
1936
1943
  )
1937
1944
  end
1938
1945
 
1946
+ # simplecov:disable Covered by monorepo release integration, not sibling-repository suite.
1947
+ def aggregate_monorepo_github_release(members)
1948
+ version = members.map { |member| member.version.to_s }.uniq
1949
+ return aggregate_release_result("all selected members must have the same version") unless version.length == 1
1950
+
1951
+ assets = members.flat_map do |member|
1952
+ gem_path = Dir[File.join(member.root, "pkg", "*.gem")].select { |path| File.basename(path).end_with?("-#{version.first}.gem") }
1953
+ checksum_path = File.join(member.root, "checksums", "#{member.name}-#{version.first}.gem.sha256")
1954
+ gem_path + (File.file?(checksum_path) ? [checksum_path] : [])
1955
+ end
1956
+ command = ["bundle", "exec", "kettle-gh-release", "--allow-unpublished", "--release-version", version.first]
1957
+ assets.each { |asset| command.concat(["--asset", asset]) }
1958
+ env = release_env.merge(
1959
+ "K_CHANGELOG_GEM_NAME" => config.family_name.to_s,
1960
+ "K_CHANGELOG_PATH" => File.expand_path(config.changelog_path, config.root),
1961
+ "K_CHANGELOG_VERSION_FILE" => File.expand_path(config.changelog_version_file, config.root)
1962
+ )
1963
+ started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
1964
+ stdout, stderr, status = Open3.capture3(env, *command, chdir: config.root)
1965
+ CommandResult.new(
1966
+ member_name: config.family_name,
1967
+ phase: "aggregate_github_release",
1968
+ command: command,
1969
+ workdir: config.root,
1970
+ status: status.exitstatus,
1971
+ success: status.success?,
1972
+ stdout: stdout,
1973
+ stderr: stderr,
1974
+ elapsed_seconds: Process.clock_gettime(Process::CLOCK_MONOTONIC) - started,
1975
+ skipped: false,
1976
+ reason: status.success? ? nil : "aggregate GitHub release failed"
1977
+ )
1978
+ rescue => error
1979
+ aggregate_release_result("#{error.class}: #{error.message}")
1980
+ end
1981
+
1982
+ def explicit_monorepo_mode?
1983
+ config.data.dig("family", "mode").to_s == "monorepo"
1984
+ end
1985
+ # simplecov:enable
1986
+
1987
+ def aggregate_release_result(reason)
1988
+ CommandResult.new(
1989
+ member_name: config.family_name,
1990
+ phase: "aggregate_github_release",
1991
+ command: ["bundle", "exec", "kettle-gh-release"],
1992
+ workdir: config.root,
1993
+ status: 1,
1994
+ success: false,
1995
+ stdout: "",
1996
+ stderr: reason,
1997
+ elapsed_seconds: 0.0,
1998
+ skipped: false,
1999
+ reason: reason
2000
+ )
2001
+ end
2002
+
1939
2003
  def base_release_env
1940
2004
  env = config.release_env
1941
2005
  env["KETTLE_FAMILY_CONFIG"] = config.path if config.path
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.37
4
+ version: 1.2.38
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -74,7 +74,7 @@ dependencies:
74
74
  version: '2.3'
75
75
  - - ">="
76
76
  - !ruby/object:Gem::Version
77
- version: 2.5.22
77
+ version: 2.5.24
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
@@ -84,7 +84,7 @@ dependencies:
84
84
  version: '2.3'
85
85
  - - ">="
86
86
  - !ruby/object:Gem::Version
87
- version: 2.5.22
87
+ version: 2.5.24
88
88
  - !ruby/object:Gem::Dependency
89
89
  name: kettle-test
90
90
  requirement: !ruby/object:Gem::Requirement
@@ -360,10 +360,10 @@ licenses:
360
360
  - AGPL-3.0-only
361
361
  metadata:
362
362
  homepage_uri: https://kettle-family.galtzo.com
363
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.37
364
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.37/CHANGELOG.md
363
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.38
364
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.38/CHANGELOG.md
365
365
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
366
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.37
366
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.38
367
367
  funding_uri: https://github.com/sponsors/pboling
368
368
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
369
369
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file