kettle-family 1.2.55 → 1.2.56
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +14 -1
- data/README.md +1 -1
- data/lib/kettle/family/cli.rb +98 -16
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/version_bump.rb +8 -3
- data.tar.gz.sig +0 -0
- metadata +4 -4
- metadata.gz.sig +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 34b36ee55d171d1e9132e82d5df605e2e56c619ffa1ebb71a7c066681a691b68
|
|
4
|
+
data.tar.gz: 1b2ff2457c6c84226919f6772fc365daa5083fbeb2b66b005f4132cd17efcaca
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cb03a78962298730c27ce7e56cf5cdfd332de42bde594b3de1da00f323a14f5a1f7051baab7d9f3a24797bcfb3f5abe4259db7b6fe803aff7c6648d2abeba5a4
|
|
7
|
+
data.tar.gz: 0c83a56da0fca5dea3a7d33f43a00bfc4b5b7302bb37c989399e5a38205a936e5e3e13e18b566df236faa0c6a33cba947237540c8183c992e34a546edea7484c
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
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
|
+
## [1.2.56] - 2026-08-18
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.2.56][1.2.56t]
|
|
36
|
+
- COVERAGE: 93.66% -- 5301/5660 lines in 33 files
|
|
37
|
+
- BRANCH COVERAGE: 76.31% -- 2136/2799 branches in 33 files
|
|
38
|
+
- 29.86% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Family version bumps now apply shared targets only to shared-root members and independently bump local-changelog members when release state marks them pending.
|
|
43
|
+
|
|
33
44
|
## [1.2.55] - 2026-08-15
|
|
34
45
|
|
|
35
46
|
- TAG: [v1.2.55][1.2.55t]
|
|
@@ -2120,7 +2131,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
2120
2131
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
2121
2132
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
2122
2133
|
|
|
2123
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.
|
|
2134
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.56...HEAD
|
|
2135
|
+
[1.2.56]: https://github.com/kettle-dev/kettle-family/compare/v1.2.55...v1.2.56
|
|
2136
|
+
[1.2.56t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.56
|
|
2124
2137
|
[1.2.55]: https://github.com/kettle-dev/kettle-family/compare/v1.2.54...v1.2.55
|
|
2125
2138
|
[1.2.55t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.55
|
|
2126
2139
|
[1.2.54]: https://github.com/kettle-dev/kettle-family/compare/v1.2.53...v1.2.54
|
data/README.md
CHANGED
|
@@ -836,7 +836,7 @@ Thanks for RTFM. ☺️
|
|
|
836
836
|
[📌gitmoji]: https://gitmoji.dev
|
|
837
837
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
838
838
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
839
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.
|
|
839
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.660-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
840
840
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
841
841
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
842
842
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
data/lib/kettle/family/cli.rb
CHANGED
|
@@ -691,7 +691,8 @@ module Kettle
|
|
|
691
691
|
family_members: ordered,
|
|
692
692
|
options: options,
|
|
693
693
|
start_at: start_at,
|
|
694
|
-
state_event_handler: state_event_handler
|
|
694
|
+
state_event_handler: state_event_handler,
|
|
695
|
+
release_state_results: release_state_results
|
|
695
696
|
)
|
|
696
697
|
state_progress&.finish
|
|
697
698
|
elapsed_seconds = Process.clock_gettime(Process::CLOCK_MONOTONIC) - started_at
|
|
@@ -716,11 +717,40 @@ module Kettle
|
|
|
716
717
|
|
|
717
718
|
StartAt = Struct.new(:member, :branch)
|
|
718
719
|
|
|
719
|
-
def command_results(command:, config:, members:, family_members:, options:, start_at:, state_event_handler: nil)
|
|
720
|
-
|
|
721
|
-
|
|
720
|
+
def command_results(command:, config:, members:, family_members:, options:, start_at:, state_event_handler: nil, release_state_results: nil)
|
|
721
|
+
if branch_target_command?(command, config)
|
|
722
|
+
return branch_target_command_results(
|
|
723
|
+
command: command,
|
|
724
|
+
config: config,
|
|
725
|
+
members: members,
|
|
726
|
+
family_members: family_members,
|
|
727
|
+
options: options,
|
|
728
|
+
start_at: start_at,
|
|
729
|
+
release_state_results: release_state_results
|
|
730
|
+
)
|
|
731
|
+
end
|
|
732
|
+
if member_local_branch_target_command?(command, config, members)
|
|
733
|
+
return member_local_branch_target_command_results(
|
|
734
|
+
command: command,
|
|
735
|
+
config: config,
|
|
736
|
+
members: members,
|
|
737
|
+
family_members: family_members,
|
|
738
|
+
options: options,
|
|
739
|
+
start_at: start_at,
|
|
740
|
+
release_state_results: release_state_results
|
|
741
|
+
)
|
|
742
|
+
end
|
|
722
743
|
|
|
723
|
-
command_results_for_current_branch(
|
|
744
|
+
command_results_for_current_branch(
|
|
745
|
+
command: command,
|
|
746
|
+
config: config,
|
|
747
|
+
members: members,
|
|
748
|
+
family_members: family_members,
|
|
749
|
+
options: options,
|
|
750
|
+
start_at: start_at,
|
|
751
|
+
state_event_handler: state_event_handler,
|
|
752
|
+
release_state_results: release_state_results
|
|
753
|
+
)
|
|
724
754
|
end
|
|
725
755
|
|
|
726
756
|
def release_state_results_for_selection(config:, members:, only:, jobs: nil)
|
|
@@ -761,9 +791,9 @@ module Kettle
|
|
|
761
791
|
members
|
|
762
792
|
end
|
|
763
793
|
|
|
764
|
-
def command_results_for_current_branch(command:, config:, members:, options:, family_members: members, start_at: StartAt.new(nil, nil), state_event_handler: nil)
|
|
794
|
+
def command_results_for_current_branch(command:, config:, members:, options:, family_members: members, start_at: StartAt.new(nil, nil), state_event_handler: nil, release_state_results: nil)
|
|
765
795
|
return mise_trust_results(config: config, members: members) if command == "mise-trust"
|
|
766
|
-
return bump_version_results(config: config, members: members, options: options, phase: command) if %w[bump bump-version].include?(command)
|
|
796
|
+
return bump_version_results(config: config, members: members, options: options, phase: command, release_state_results: release_state_results) if %w[bump bump-version].include?(command)
|
|
767
797
|
return add_changelog_results(members: members, options: options) if command == "add-changelog"
|
|
768
798
|
return clean_unreleased_results(config: config, members: members, options: options) if command == "clean-unreleased"
|
|
769
799
|
return reconcile_release_results(config: config, members: members, options: options) if command == "reconcile-releases"
|
|
@@ -936,7 +966,7 @@ module Kettle
|
|
|
936
966
|
members.any? { |member| member_release_config(member: member, config: config) }
|
|
937
967
|
end
|
|
938
968
|
|
|
939
|
-
def branch_target_command_results(command:, config:, members:, family_members:, options:, start_at:)
|
|
969
|
+
def branch_target_command_results(command:, config:, members:, family_members:, options:, start_at:, release_state_results: nil)
|
|
940
970
|
runner = CommandRunner.new(execute: options[:execute])
|
|
941
971
|
selected_names = members.map(&:name)
|
|
942
972
|
release_target_branches(command: command, config: config, start_at: start_at).each_with_object([]) do |branch, memo|
|
|
@@ -950,7 +980,14 @@ module Kettle
|
|
|
950
980
|
|
|
951
981
|
branch_members = rediscovered_selected_members(config: config, selected_names: selected_names, command: command)
|
|
952
982
|
branch_members = members if branch_members.empty?
|
|
953
|
-
branch_results = command_results_for_current_branch(
|
|
983
|
+
branch_results = command_results_for_current_branch(
|
|
984
|
+
command: command,
|
|
985
|
+
config: config,
|
|
986
|
+
members: branch_members,
|
|
987
|
+
family_members: family_members,
|
|
988
|
+
options: options,
|
|
989
|
+
release_state_results: release_state_results
|
|
990
|
+
)
|
|
954
991
|
branch_results.each { |result| result.branch = branch if result.respond_to?(:branch=) }
|
|
955
992
|
memo.concat(branch_results)
|
|
956
993
|
break memo unless memo.last&.ok?
|
|
@@ -960,12 +997,19 @@ module Kettle
|
|
|
960
997
|
end
|
|
961
998
|
end
|
|
962
999
|
|
|
963
|
-
def member_local_branch_target_command_results(command:, config:, members:, family_members:, options:, start_at:)
|
|
1000
|
+
def member_local_branch_target_command_results(command:, config:, members:, family_members:, options:, start_at:, release_state_results: nil)
|
|
964
1001
|
runner = CommandRunner.new(execute: options[:execute])
|
|
965
1002
|
members.each_with_object([]) do |member, memo|
|
|
966
1003
|
member_config = member_release_config(member: member, config: config)
|
|
967
1004
|
unless member_config
|
|
968
|
-
memo.concat(command_results_for_current_branch(
|
|
1005
|
+
memo.concat(command_results_for_current_branch(
|
|
1006
|
+
command: command,
|
|
1007
|
+
config: config,
|
|
1008
|
+
members: [member],
|
|
1009
|
+
family_members: family_members,
|
|
1010
|
+
options: options,
|
|
1011
|
+
release_state_results: release_state_results
|
|
1012
|
+
))
|
|
969
1013
|
break memo unless memo.last&.ok?
|
|
970
1014
|
next
|
|
971
1015
|
end
|
|
@@ -981,7 +1025,14 @@ module Kettle
|
|
|
981
1025
|
|
|
982
1026
|
branch_members = rediscovered_selected_members(config: member_config, selected_names: [member.name], command: command)
|
|
983
1027
|
branch_members = [member] if branch_members.empty?
|
|
984
|
-
branch_results = command_results_for_current_branch(
|
|
1028
|
+
branch_results = command_results_for_current_branch(
|
|
1029
|
+
command: command,
|
|
1030
|
+
config: member_config,
|
|
1031
|
+
members: branch_members,
|
|
1032
|
+
family_members: family_members,
|
|
1033
|
+
options: options,
|
|
1034
|
+
release_state_results: release_state_results
|
|
1035
|
+
)
|
|
985
1036
|
branch_results.each { |result| result.branch = branch if result.respond_to?(:branch=) }
|
|
986
1037
|
memo.concat(branch_results)
|
|
987
1038
|
break unless memo.last&.ok?
|
|
@@ -1019,13 +1070,19 @@ module Kettle
|
|
|
1019
1070
|
StartAt.new(member, branch)
|
|
1020
1071
|
end
|
|
1021
1072
|
|
|
1022
|
-
def bump_version_results(config:, members:, options:, phase:)
|
|
1073
|
+
def bump_version_results(config:, members:, options:, phase:, release_state_results: nil)
|
|
1023
1074
|
require_relative "version_bump"
|
|
1024
1075
|
require_relative "release_waves"
|
|
1025
1076
|
|
|
1026
1077
|
results = []
|
|
1027
1078
|
completed_target_versions = {}
|
|
1028
|
-
|
|
1079
|
+
shared_member_names = shared_bump_member_names(config: config, members: members)
|
|
1080
|
+
shared_target_version = shared_bump_target_version(
|
|
1081
|
+
config: config,
|
|
1082
|
+
members: members,
|
|
1083
|
+
options: options,
|
|
1084
|
+
release_state_results: release_state_results
|
|
1085
|
+
)
|
|
1029
1086
|
ReleaseWaves.new(members: members).waves.each do |wave|
|
|
1030
1087
|
bump = VersionBump.new(
|
|
1031
1088
|
members: wave,
|
|
@@ -1034,6 +1091,7 @@ module Kettle
|
|
|
1034
1091
|
mode: bump_version_mode(options),
|
|
1035
1092
|
phase: phase,
|
|
1036
1093
|
shared_target_version: shared_target_version,
|
|
1094
|
+
shared_member_names: shared_member_names,
|
|
1037
1095
|
dependency_target_versions: completed_target_versions
|
|
1038
1096
|
)
|
|
1039
1097
|
wave_results = bump.results
|
|
@@ -1060,14 +1118,38 @@ module Kettle
|
|
|
1060
1118
|
end
|
|
1061
1119
|
end
|
|
1062
1120
|
|
|
1063
|
-
def
|
|
1121
|
+
def shared_bump_member_names(config:, members:)
|
|
1122
|
+
return [] unless config.shared_changelog?
|
|
1123
|
+
|
|
1124
|
+
members.reject { |member| config.member_local_changelog?(member) }.map(&:name)
|
|
1125
|
+
end
|
|
1126
|
+
|
|
1127
|
+
def shared_bump_target_version(config:, members:, options:, release_state_results: nil)
|
|
1064
1128
|
return unless config.shared_changelog?
|
|
1065
1129
|
return unless Kettle::Dev::VersionBump::BUMP_TYPES.include?(options[:target_version].to_s)
|
|
1066
1130
|
|
|
1067
|
-
|
|
1131
|
+
shared_members = members.reject { |member| config.member_local_changelog?(member) }
|
|
1132
|
+
return if shared_members.empty?
|
|
1133
|
+
|
|
1134
|
+
versions = shared_members.map { |member| Gem::Version.new(member.version.to_s) }.uniq
|
|
1068
1135
|
current = versions.max
|
|
1069
1136
|
return current.to_s if versions.length > 1
|
|
1070
1137
|
|
|
1138
|
+
released_versions = Array(release_state_results).filter_map do |result|
|
|
1139
|
+
next unless shared_members.any? { |member| member.name == result.member_name }
|
|
1140
|
+
|
|
1141
|
+
state = result.state
|
|
1142
|
+
next unless state.respond_to?(:[])
|
|
1143
|
+
|
|
1144
|
+
value = state["latest_released"]
|
|
1145
|
+
next if value.to_s.empty?
|
|
1146
|
+
|
|
1147
|
+
Gem::Version.new(value.to_s)
|
|
1148
|
+
rescue ArgumentError
|
|
1149
|
+
nil
|
|
1150
|
+
end
|
|
1151
|
+
return current.to_s if released_versions.any? && current > released_versions.max
|
|
1152
|
+
|
|
1071
1153
|
Kettle::Dev::VersionBump.resolve_target_version(options[:target_version].to_s, current.to_s)
|
|
1072
1154
|
end
|
|
1073
1155
|
|
|
@@ -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.
|
|
8
|
+
VERSION = "1.2.56"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
@@ -7,7 +7,7 @@ module Kettle
|
|
|
7
7
|
class VersionBump
|
|
8
8
|
DEPENDENCY_METHODS = %i[add_dependency add_runtime_dependency add_development_dependency].freeze
|
|
9
9
|
|
|
10
|
-
def initialize(members:, target_version:, from_version: nil, mode: :dry_run, phase: "bump-version", dependency_target_versions: nil, shared_target_version: nil)
|
|
10
|
+
def initialize(members:, target_version:, from_version: nil, mode: :dry_run, phase: "bump-version", dependency_target_versions: nil, shared_target_version: nil, shared_member_names: nil)
|
|
11
11
|
@members = members
|
|
12
12
|
@target_version = target_version.to_s
|
|
13
13
|
@explicit_target_version = validate_version(target_version) unless Kettle::Dev::VersionBump::BUMP_TYPES.include?(@target_version)
|
|
@@ -15,6 +15,7 @@ module Kettle
|
|
|
15
15
|
@mode = mode
|
|
16
16
|
@phase = phase
|
|
17
17
|
@shared_target_version = shared_target_version && validate_version(shared_target_version)
|
|
18
|
+
@shared_member_names = shared_member_names&.map(&:to_s)
|
|
18
19
|
@member_names = members.map(&:name)
|
|
19
20
|
@member_target_versions = members.each_with_object({}) do |member, memo|
|
|
20
21
|
memo[member.name] = resolve_target_version(member)
|
|
@@ -33,7 +34,7 @@ module Kettle
|
|
|
33
34
|
|
|
34
35
|
private
|
|
35
36
|
|
|
36
|
-
attr_reader :members, :target_version, :explicit_target_version, :from_version, :mode, :phase, :member_target_versions, :dependency_target_versions, :dependency_member_names, :shared_target_version
|
|
37
|
+
attr_reader :members, :target_version, :explicit_target_version, :from_version, :mode, :phase, :member_target_versions, :dependency_target_versions, :dependency_member_names, :shared_target_version, :shared_member_names
|
|
37
38
|
|
|
38
39
|
def validate_version(version)
|
|
39
40
|
with_dev_errors { Kettle::Dev::VersionBump.validate_version(version) }
|
|
@@ -148,11 +149,15 @@ module Kettle
|
|
|
148
149
|
|
|
149
150
|
def resolve_target_version(member)
|
|
150
151
|
return explicit_target_version unless Kettle::Dev::VersionBump::BUMP_TYPES.include?(target_version)
|
|
151
|
-
return shared_target_version if shared_target_version
|
|
152
|
+
return shared_target_version if shared_target_version && shared_target_applies_to?(member)
|
|
152
153
|
|
|
153
154
|
with_dev_errors { Kettle::Dev::VersionBump.resolve_target_version(target_version, member.version) }
|
|
154
155
|
end
|
|
155
156
|
|
|
157
|
+
def shared_target_applies_to?(member)
|
|
158
|
+
shared_member_names.nil? || shared_member_names.include?(member.name)
|
|
159
|
+
end
|
|
160
|
+
|
|
156
161
|
def write_edits(edits)
|
|
157
162
|
Kettle::Dev::VersionBump.write_edits(edits)
|
|
158
163
|
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: 1.2.
|
|
4
|
+
version: 1.2.56
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -361,10 +361,10 @@ licenses:
|
|
|
361
361
|
- AGPL-3.0-only
|
|
362
362
|
metadata:
|
|
363
363
|
homepage_uri: https://kettle-family.galtzo.com
|
|
364
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.
|
|
365
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.
|
|
364
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.56
|
|
365
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.56/CHANGELOG.md
|
|
366
366
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
367
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.
|
|
367
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.56
|
|
368
368
|
funding_uri: https://github.com/sponsors/pboling
|
|
369
369
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
370
370
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
metadata.gz.sig
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
�
|
|
2
|
-
|
|
1
|
+
��u2���<*�)�p�EX��MGvb��
|
|
2
|
+
>����ֺ�sn��s�K�����Y% �I�f��#�W>��.
|
|
3
3
|
�f�_ţ�,�,�_T[��ڀ͝/�]|���
|
|
4
|
+
�|�M���<д�UM1HBr`���:?�t�bR;\� �缺�R�����D�xk���T�Kn\�G%w���F��f��N4����#ۛ<c
|
|
5
|
+
�N����C���g�{��f�q.`:q�-9�Ĺ���h?;��4 ޗ���E$�?��K���"֟AķW8������A
|