kettle-dev 3.1.0 → 3.1.1

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: b7fdd37cea8287569cfe883f3b0830022afe7e90be2582adf2046cadcdd687c7
4
- data.tar.gz: 327f6277c15a6e780001e321192b72e5a10afc56718171e3324e24445c0466b5
3
+ metadata.gz: eaf2fc5f85eac56d87d38a8029c740631c50410cfb76c35d5e488df48374f170
4
+ data.tar.gz: d229bb60bdd25990a7e9666dcd7f54f61c42b58ecb695c63f70db3e1a17f2802
5
5
  SHA512:
6
- metadata.gz: f7cb591d2c7e73f063f11362091eb7efc51ff3d9b6a5cd4242260e3dd45fe1ffce867a77e218f606880f7cfd7bf5fd1f071391714b8164721c89860d4b63c737
7
- data.tar.gz: 99531967a52f754cbda4a1d868e216de15d1dac6e6d27d1b4028dad9dae87681b1a88761f91d0931425d050f9ae0a6a18344c19f48621dfccac346f9a539c9ec
6
+ metadata.gz: c439b9406442d64e949a50fc2669eb1eb4a94a43e36cde5c71797e86d16e4278cff16bf582e212b54b1cf50ffbdaa982a334ffd25f4f8c12b6d887b6c8565aad
7
+ data.tar.gz: '0920ce88eb1b862b8071d1958ef9c638dc55166b68c6abab21b6b93d96fea1e8656187e00086c5a43ee2fb2dd408bb8c737cf5a524a86cab1fbd19e09d6fc90b'
checksums.yaml.gz.sig CHANGED
@@ -1,2 +1,3 @@
1
- ZN�ȕ!s��UHm*6��u�5���o}�:ɓD�t�J�pn��[ `�|=o��WQ��4�x����t�� �|�<�z�V Bb���aw�vX;�%�W!�*󴐍!�;m���I�����,���r�"x~���研����-ni������i��cZ����ykESy^k
2
- a�9^�� B����]���*��X����8�� ]��-���sT��� s�k�q
1
+ /Xl�j�ꪝ��kc$��b��)���.�Z�����2B��>{(
2
+ }>��ŠU�����g��D?�Y
3
+ �r�!RX��̩J���c�v�!�k�o�L�H��̧�i��T����(� � � xGW[t<�^>Aq���#��R��eij=H�L`ԯr�TJ�S������Ӟ�q}�4E,a�ܤ��^�I(&�z�4�Qzx/l�Y��d����4�_�����6������t���2��`��B ��b<qR׶�:=g(�{��a��6���Z�1�*)��t��.[RhFC/�Źs��W��3�i�ۑw��z�,��`2��A,J�r�ŕ�y�՛�K�=I�� J��l\.f�;nL6�`}��M�O'#.� s��
data/CHANGELOG.md CHANGED
@@ -30,6 +30,17 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [3.1.1] - 2026-09-14
34
+
35
+ - TAG: [v3.1.1][3.1.1t]
36
+ - COVERAGE: 91.54% -- 6138/6705 lines in 48 files
37
+ - BRANCH COVERAGE: 76.08% -- 2344/3081 branches in 48 files
38
+ - 51.02% documented
39
+
40
+ ### Fixed
41
+
42
+ - Close release-created branch-stack validation PRs after successful publication instead of leaving obsolete conflicted PRs open.
43
+
33
44
  ## [3.1.0] - 2026-09-10
34
45
 
35
46
  - TAG: [v3.1.0][3.1.0t]
@@ -3860,7 +3871,9 @@ Please file a bug if you notice a violation of semantic versioning.
3860
3871
  - Selecting will run the selected workflow via `act`
3861
3872
  - This may move to its own gem in the future.
3862
3873
 
3863
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.0...HEAD
3874
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.1...HEAD
3875
+ [3.1.1]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.0...v3.1.1
3876
+ [3.1.1t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.1.1
3864
3877
  [3.1.0]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.34...v3.1.0
3865
3878
  [3.1.0t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.1.0
3866
3879
  [3.0.34]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.33...v3.0.34
data/README.md CHANGED
@@ -1066,7 +1066,7 @@ Thanks for RTFM. ☺️
1066
1066
  [📌gitmoji]: https://gitmoji.dev
1067
1067
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1068
1068
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1069
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.685-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1069
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.705-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1070
1070
  [🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
1071
1071
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1072
1072
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -214,6 +214,7 @@ module Kettle
214
214
  @version_override = Kettle::Dev::Versioning.normalize_explicit_version(version)
215
215
  @appraisal_task = normalize_appraisal_task(appraisal_task || ENV["KETTLE_RELEASE_APPRAISAL_TASK"])
216
216
  @release_candidate = nil
217
+ @release_ci_pull_request = nil
217
218
  @event_stream = options[:event_stream]
218
219
  @event_recorder = Kettle::Ndjson.event_recorder(@event_stream, phase_timings: [])
219
220
  @secrets_provider = options[:secrets_provider] || Kettle::Dev::ReleaseSecrets::Factory.build(provider_name: secrets_provider_name)
@@ -555,6 +556,11 @@ module Kettle
555
556
  # 19. push tags to remotes (final step)
556
557
  push_tags! if run_step?(19) && !local_ci?
557
558
 
559
+ # Branch-stack PRs exist only to trigger pull-request-only CI. They are
560
+ # deliberately not merged into trunk, so close the release-created PR
561
+ # after the publication has completed successfully.
562
+ close_generated_branch_stack_pull_request!
563
+
558
564
  # Final success message
559
565
  begin
560
566
  version ||= detect_version
@@ -1460,11 +1466,24 @@ module Kettle
1460
1466
 
1461
1467
  pull_request = github_pull_request_for_branch(owner: owner, repo: repo, branch: branch, base: trunk)
1462
1468
  if pull_request
1463
- puts "GitHub pull request ##{pull_request.fetch("number")} already open for #{branch} -> #{trunk}: #{pull_request.fetch("url")}"
1469
+ body = pull_request["body"]
1470
+ @release_ci_pull_request = {
1471
+ owner: owner,
1472
+ repo: repo,
1473
+ number: pull_request["number"],
1474
+ cleanup: body.is_a?(String) && body.index("Automated release validation PR for") == 0
1475
+ }
1476
+ puts "GitHub pull request ##{pull_request["number"]} already open for #{branch} -> #{trunk}: #{pull_request["url"]}"
1464
1477
  return
1465
1478
  end
1466
1479
 
1467
- create_github_pull_request!(owner: owner, repo: repo, branch: branch, base: trunk)
1480
+ number = create_github_pull_request!(owner: owner, repo: repo, branch: branch, base: trunk)
1481
+ @release_ci_pull_request = {
1482
+ owner: owner,
1483
+ repo: repo,
1484
+ number: number,
1485
+ cleanup: true
1486
+ }
1468
1487
  end
1469
1488
 
1470
1489
  def github_pull_request_for_branch(owner:, repo:, branch:, base:)
@@ -1480,7 +1499,7 @@ module Kettle
1480
1499
  "--state",
1481
1500
  "open",
1482
1501
  "--json",
1483
- "number,url",
1502
+ "number,url,body",
1484
1503
  "--limit",
1485
1504
  "1"
1486
1505
  )
@@ -1503,9 +1522,36 @@ module Kettle
1503
1522
  "--title",
1504
1523
  "Release #{branch}",
1505
1524
  "--body",
1506
- "Automated release validation PR for `#{branch}`.\n\nThis PR lets GitHub Actions run before kettle-release merges the branch into `#{base}`."
1525
+ release_validation_pull_request_body(branch)
1507
1526
  )
1508
1527
  puts "Created GitHub pull request for #{branch} -> #{base}: #{output.strip}"
1528
+ output[/\/pull\/(\d+)/, 1]
1529
+ end
1530
+
1531
+ def release_validation_pull_request_body(branch)
1532
+ "Automated release validation PR for `#{branch}`.\n\nThis PR exists only to run pull-request-only GitHub Actions before publishing the branch-stack release. Branch-stack releases are not merged into trunk."
1533
+ end
1534
+
1535
+ def close_generated_branch_stack_pull_request!
1536
+ pull_request = @release_ci_pull_request
1537
+ return unless pull_request && pull_request[:cleanup]
1538
+
1539
+ branch = current_branch
1540
+ trunk = detect_trunk_branch
1541
+ return unless branch_stack_release_branch?(branch, trunk)
1542
+
1543
+ args = [
1544
+ "pr", "close", pull_request[:number].to_s,
1545
+ "--repo", "#{pull_request[:owner]}/#{pull_request[:repo]}",
1546
+ "--comment", "Release completed successfully; closing the CI-only validation PR."
1547
+ ]
1548
+ stdout, stderr, status = Open3.capture3(self.class.send(:command_env), "gh", *args)
1549
+ if status.success?
1550
+ puts "Closed release validation PR ##{pull_request[:number]} for #{branch}."
1551
+ else
1552
+ detail = stderr.strip.empty? ? stdout.strip : stderr.strip
1553
+ warn "Could not close release validation PR ##{pull_request[:number]}: #{detail}"
1554
+ end
1509
1555
  end
1510
1556
 
1511
1557
  def gh_output!(*args)
@@ -1748,7 +1794,7 @@ module Kettle
1748
1794
  def git_output(args)
1749
1795
  # Route all git interactions through the GitAdapter so tests can safely mock them
1750
1796
  out, ok = @git.capture(args)
1751
- [out.to_s.strip, !!ok]
1797
+ [out ? out.strip : "", !!ok]
1752
1798
  end
1753
1799
 
1754
1800
  def ensure_git_user!
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "3.1.0"
8
+ VERSION = "3.1.1"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -60,7 +60,7 @@ dependencies:
60
60
  version: '0.3'
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: 0.3.14
63
+ version: 0.3.15
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
@@ -70,7 +70,7 @@ dependencies:
70
70
  version: '0.3'
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 0.3.14
73
+ version: 0.3.15
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: kettle-ndjson
76
76
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +80,7 @@ dependencies:
80
80
  version: '0.1'
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: 0.1.15
83
+ version: 0.1.16
84
84
  type: :runtime
85
85
  prerelease: false
86
86
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ dependencies:
90
90
  version: '0.1'
91
91
  - - ">="
92
92
  - !ruby/object:Gem::Version
93
- version: 0.1.15
93
+ version: 0.1.16
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: kettle-rb
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -100,7 +100,7 @@ dependencies:
100
100
  version: '0.1'
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 0.1.12
103
+ version: 0.1.13
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
@@ -110,7 +110,7 @@ dependencies:
110
110
  version: '0.1'
111
111
  - - ">="
112
112
  - !ruby/object:Gem::Version
113
- version: 0.1.12
113
+ version: 0.1.13
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: kettle-test
116
116
  requirement: !ruby/object:Gem::Requirement
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '2.0'
121
121
  - - ">="
122
122
  - !ruby/object:Gem::Version
123
- version: 2.0.21
123
+ version: 2.0.22
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
@@ -130,7 +130,7 @@ dependencies:
130
130
  version: '2.0'
131
131
  - - ">="
132
132
  - !ruby/object:Gem::Version
133
- version: 2.0.21
133
+ version: 2.0.22
134
134
  - !ruby/object:Gem::Dependency
135
135
  name: ruby-progressbar
136
136
  requirement: !ruby/object:Gem::Requirement
@@ -401,10 +401,10 @@ licenses:
401
401
  - AGPL-3.0-only
402
402
  metadata:
403
403
  homepage_uri: https://kettle-dev.galtzo.com
404
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.1.0
405
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.1.0/CHANGELOG.md
404
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.1.1
405
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.1.1/CHANGELOG.md
406
406
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
407
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.1.0
407
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.1.1
408
408
  funding_uri: https://github.com/sponsors/pboling
409
409
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
410
410
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file