kettle-family 1.3.34 → 1.3.36

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: 0f998250246be593256749a248a7ae97b9e22eada3f522aeee55a760c7c69286
4
- data.tar.gz: 5260947209c6e41c32d71daac0efc7aed14def50a68c6f26c9d7faf0934ce501
3
+ metadata.gz: 90c20dc69493246554befc819ed36f9e5c1bc81ef54f44257c7c8e2347bbe457
4
+ data.tar.gz: 410f4b020a832c51c372ab3230b859c8ec7b1e8829c26c595582a22f27d6901d
5
5
  SHA512:
6
- metadata.gz: 83195b27096a7dc07f64984d5c28db5e5bbfbe101662216478550c644f90eba7eacc0d6fb86251dc6b8a88a48d39d3519582a9f038448bfea899c2b3507116c6
7
- data.tar.gz: 512e1cb879df1ceb8e2dc1913e915beef55f696f0c6e97c453c3800e9bccb66293c178d9a30ce0a6384a20d6d48b8a83d6991311f23aa985109abb391fed2654
6
+ metadata.gz: 9268ee8a2ee002ca7394d0c67c55a579f2eeb2621bf2b09362b3ca8f776ff02ab98a39923b343b5c805f7c42276ed25fe34e35efc2b605cb282ae704140ad45b
7
+ data.tar.gz: bf88cb60646c3adbe20b397ea8e4e2e6829435b078ad9841e75623090233c5575682dc1f8695192b92706b34fa9635e07de1e0abd2f8d833d2ec1447bd1511d1
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,48 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.3.36] - 2026-10-28
34
+
35
+ - TAG: [v1.3.36][1.3.36t]
36
+ - COVERAGE: 93.12% -- 7601/8163 lines in 45 files
37
+ - BRANCH COVERAGE: 77.34% -- 3041/3932 branches in 45 files
38
+ - 38.89% documented
39
+
40
+ ### Changed
41
+
42
+ - [kc] template-family-resume-hints: Template failures now produce one combined retry hint for failed and pending members, preserving member@branch selectors for branch-stack templates.
43
+
44
+ - [kc] kettle-jem/prepare: updated 7 project files:
45
+ - configuration (1)
46
+ - dependencies (6)
47
+
48
+ - [kc] kettle-jem/template: updated 5 project files:
49
+ - code and tests (1)
50
+ - documentation (1)
51
+ - other (2)
52
+ - workflows (1)
53
+
54
+ ## [1.3.35] - 2026-10-26
55
+
56
+ - TAG: [v1.3.35][1.3.35t]
57
+ - COVERAGE: 93.07% -- 7558/8121 lines in 45 files
58
+ - BRANCH COVERAGE: 77.45% -- 3016/3894 branches in 45 files
59
+ - 38.89% documented
60
+
61
+ ### Changed
62
+
63
+ - [kc] kettle-jem/prepare: updated 9 project files:
64
+ - dependencies (9)
65
+
66
+ - [kc] kettle-jem/template: updated 4 project files:
67
+ - dependencies (2)
68
+ - other (1)
69
+ - workflows (1)
70
+
71
+ ### Fixed
72
+
73
+ - [kc] duplicate-family-member-diagnostics: Duplicate gem names found in different directories now report both roots and gemspecs, with guidance for excluding scratch checkouts or disabling discovery when `members.roots` is complete.
74
+
33
75
  ## [1.3.34] - 2026-10-25
34
76
 
35
77
  - TAG: [v1.3.34][1.3.34t]
@@ -3278,7 +3320,11 @@ Please file a bug if you notice a violation of semantic versioning.
3278
3320
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
3279
3321
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
3280
3322
 
3281
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.3.34...HEAD
3323
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.3.36...HEAD
3324
+ [1.3.36]: https://github.com/kettle-dev/kettle-family/compare/v1.3.35...v1.3.36
3325
+ [1.3.36t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.3.36
3326
+ [1.3.35]: https://github.com/kettle-dev/kettle-family/compare/v1.3.34...v1.3.35
3327
+ [1.3.35t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.3.35
3282
3328
  [1.3.34]: https://github.com/kettle-dev/kettle-family/compare/v1.3.33...v1.3.34
3283
3329
  [1.3.34t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.3.34
3284
3330
  [1.3.33]: https://github.com/kettle-dev/kettle-family/compare/v1.3.32...v1.3.33
data/README.md CHANGED
@@ -64,12 +64,12 @@ configuration, create their own GitHub Release through `kettle-release`.
64
64
 
65
65
  ### Compatibility
66
66
 
67
- Compatible with MRI Ruby 4.0.0+.
67
+ The gem's declared runtime compatibility floor is MRI Ruby 4.0.0+, with concordant releases of JRuby and TruffleRuby.
68
68
  CI workflows and Appraisals are generated for MRI Ruby 4.0.0+.
69
69
  The current MRI CI lane runs on Linux and macOS.
70
- This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
71
- may be higher than the gem's runtime compatibility floor when legacy Rubies are
72
- not practical for the current toolchain.
70
+ The test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml`.
71
+ When it is higher than the runtime floor, older runtime-compatible Rubies are
72
+ not covered by the generated CI or Appraisal matrix.
73
73
 
74
74
  <a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
75
75
 
@@ -1191,7 +1191,7 @@ Thanks for RTFM. ☺️
1191
1191
  [📌gitmoji]: https://gitmoji.dev
1192
1192
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1193
1193
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1194
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-8.118-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1194
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-8.163-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1195
1195
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
1196
1196
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1197
1197
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -37,7 +37,9 @@ module Kettle
37
37
 
38
38
  (configured + discovered).each do |member|
39
39
  existing = by_name[member.name]
40
- raise Error, "duplicate family member #{member.name.inspect}" if existing && !same_directory?(existing.root, member.root)
40
+ if existing && !same_directory?(existing.root, member.root)
41
+ raise duplicate_member_error(existing, member)
42
+ end
41
43
 
42
44
  by_name[member.name] = member
43
45
  end
@@ -82,6 +84,18 @@ module Kettle
82
84
  release_dependency_member_names.include?(File.basename(File.expand_path(root)))
83
85
  end
84
86
 
87
+ def duplicate_member_error(first, second)
88
+ Error.new(<<~MESSAGE.strip)
89
+ duplicate family member #{first.name.inspect} found in different directories:
90
+ - #{first.root} (#{first.gemspec_path})
91
+ - #{second.root} (#{second.gemspec_path})
92
+ Each gem name must resolve to one family directory. If one is a scratch
93
+ checkout or worktree, move it outside the discovery roots or exclude it
94
+ with members.exclude. If members.roots lists the complete family, set
95
+ members.discover: false.
96
+ MESSAGE
97
+ end
98
+
85
99
  def primary_gemspec(root)
86
100
  gemspecs = Paths.glob(root, "*.gemspec")
87
101
  raise Error, "no gemspec found in #{root}" if gemspecs.empty?
@@ -113,7 +113,7 @@ module Kettle
113
113
 
114
114
  def check_member(member, branch: nil, event_handler: nil)
115
115
  started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
116
- command = release_state_command
116
+ command = release_state_command(member)
117
117
  emit_event(event_handler, member: member, branch: branch, action: "member_start", status: "running", command: command)
118
118
  emit_event(event_handler, member: member, branch: branch, action: "changelog_command", status: "running", command: command)
119
119
  stdout, stderr, status = capture_release_state(
@@ -142,15 +142,16 @@ module Kettle
142
142
  emit_event(event_handler, member: member, branch: branch, action: "member_complete", status: success ? "ok" : "failed", elapsed_seconds: elapsed, status_code: status.exitstatus)
143
143
  result
144
144
  rescue JSON::ParserError => error
145
- result = result(member: member, command: command || release_state_command, stdout: stdout, stderr: stderr, status: 1, elapsed: elapsed || 0.0, success: false, state: {}, reason: "invalid release-state JSON: #{error.message}", branch: branch)
145
+ result = result(member: member, command: command || release_state_command(member), stdout: stdout, stderr: stderr, status: 1, elapsed: elapsed || 0.0, success: false, state: {}, reason: "invalid release-state JSON: #{error.message}", branch: branch)
146
146
  emit_event(event_handler, member: member, branch: branch, action: "member_complete", status: "failed", elapsed_seconds: elapsed || 0.0, status_code: 1, reason: result.reason)
147
147
  result
148
148
  end
149
149
 
150
- def release_state_command
151
- [RbConfig.ruby, kettle_changelog_executable, "--release-state", "--json"]
150
+ def release_state_command(member = nil)
151
+ version_args = member&.version ? ["--version", member.version.to_s] : []
152
+ [RbConfig.ruby, kettle_changelog_executable, *version_args, "--release-state", "--json"]
152
153
  rescue Gem::Exception
153
- [RbConfig.ruby, "-S", "kettle-changelog", "--release-state", "--json"]
154
+ [RbConfig.ruby, "-S", "kettle-changelog", *version_args, "--release-state", "--json"]
154
155
  end
155
156
 
156
157
  def kettle_changelog_executable
@@ -176,7 +177,7 @@ module Kettle
176
177
 
177
178
  def check_shared_changelog_member(member, branch: nil, event_handler: nil)
178
179
  started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
179
- command = release_state_command
180
+ command = release_state_command(member)
180
181
  emit_event(event_handler, member: member, branch: branch, action: "member_start", status: "running", command: command)
181
182
  emit_event(event_handler, member: member, branch: branch, action: "changelog_command", status: "running", command: command)
182
183
  stdout, stderr, status = capture_release_state(
@@ -216,13 +217,13 @@ module Kettle
216
217
  emit_event(event_handler, member: member, branch: branch, action: "member_complete", status: success ? "ok" : "failed", elapsed_seconds: elapsed, status_code: status.exitstatus)
217
218
  result
218
219
  rescue JSON::ParserError => error
219
- result = result(member: member, command: command || release_state_command, stdout: stdout, stderr: stderr, status: 1, elapsed: elapsed || 0.0, success: false, state: {}, reason: "invalid release-state JSON: #{error.message}", branch: branch)
220
+ result = result(member: member, command: command || release_state_command(member), stdout: stdout, stderr: stderr, status: 1, elapsed: elapsed || 0.0, success: false, state: {}, reason: "invalid release-state JSON: #{error.message}", branch: branch)
220
221
  emit_event(event_handler, member: member, branch: branch, action: "member_complete", status: "failed", elapsed_seconds: elapsed || 0.0, status_code: 1, reason: result.reason)
221
222
  result
222
223
  rescue Error => error
223
224
  result = result(
224
225
  member: member,
225
- command: command || release_state_command,
226
+ command: command || release_state_command(member),
226
227
  stdout: "",
227
228
  stderr: error.message,
228
229
  status: 1,
@@ -803,7 +804,8 @@ module Kettle
803
804
  member_config = member_local_release_config(member)
804
805
  return unless member_config
805
806
 
806
- self.class.new(config: member_config, members: [member]).results(event_handler: event_handler)
807
+ current_result = check_member(member, event_handler: event_handler)
808
+ [current_result, *self.class.new(config: member_config, members: [member]).results(event_handler: event_handler)]
807
809
  end
808
810
 
809
811
  def emit_event(event_handler, member:, branch:, action:, status:, **details)
@@ -997,11 +999,20 @@ module Kettle
997
999
 
998
1000
  def add_branch_worktree(root:, branch:, worktree_root:)
999
1001
  WORKTREE_ADMIN_MUTEX.synchronize do
1000
- _stdout, stderr, status = Open3.capture3("git", "worktree", "add", "--detach", worktree_root, branch, chdir: root)
1001
- raise Error, "could not add worktree for #{branch}: #{stderr}" unless status.success?
1002
+ ref = resolvable_branch_ref(root, branch)
1003
+ _stdout, stderr, status = Open3.capture3("git", "worktree", "add", "--detach", worktree_root, ref, chdir: root)
1004
+ raise Error, "could not add worktree for #{branch}: #{stderr.strip}; fetch the branch or create a local ref (git fetch origin #{branch})" unless status.success?
1002
1005
  end
1003
1006
  end
1004
1007
 
1008
+ def resolvable_branch_ref(root, branch)
1009
+ [branch, "refs/remotes/origin/#{branch}"].each do |ref|
1010
+ _stdout, _stderr, status = Open3.capture3("git", "rev-parse", "--verify", "#{ref}^{commit}", chdir: root)
1011
+ return ref if status.success?
1012
+ end
1013
+ branch
1014
+ end
1015
+
1005
1016
  def remove_branch_worktree(root:, worktree_root:)
1006
1017
  return unless worktree_root && Dir.exist?(worktree_root)
1007
1018
 
@@ -125,7 +125,7 @@ module Kettle
125
125
  lines << " #{result_state(result)} #{result_identity(result)} #{result.phase} #{result.reason || ""}".rstrip
126
126
  append_result_stdout(lines, result)
127
127
  append_indented_output(lines, result.stderr) if !result.ok? && !result.stderr.to_s.empty?
128
- resume_hint = resume_hint_for(result)
128
+ resume_hint = resume_hint_for(result) unless command == "template"
129
129
  lines << " resume: #{resume_hint}" if !result.ok? && resume_hint
130
130
  end
131
131
  append_template_summary(lines) if command == "template"
@@ -764,11 +764,10 @@ module Kettle
764
764
  failed ? [resume_hint_for(failed)] : []
765
765
  end
766
766
 
767
- # Mirrors release_resume_hints: one hint per failure, plus a single set-based
768
- # hint naming every member that never ran. --only selects by name rather
769
- # than position, so it resumes exactly the unfinished members regardless of
770
- # how dispatch ordered them, and the wave grouping is re-derived from the
771
- # selected subset.
767
+ # Test gets one hint per failure plus a set-based hint for members that never
768
+ # ran. --only selects by name rather than position, so it resumes exactly the
769
+ # unfinished members regardless of how dispatch ordered them. Template uses
770
+ # one combined hint because it is idempotent and family-lockstep.
772
771
  #
773
772
  # A family-root failure takes precedence and suppresses the set-based hint:
774
773
  # that phase aborts the entire run before member dispatch, so every member
@@ -776,6 +775,7 @@ module Kettle
776
775
  def non_positional_resume_hints
777
776
  root_failure = results.find { |result| !result.ok? && family_root_phase?(result.phase) }
778
777
  return [resume_hint_for(root_failure)] if root_failure
778
+ return template_resume_hints if command == "template"
779
779
 
780
780
  failed_hints = visible_results.reject(&:ok?).filter_map { |result| resume_hint_for(result) }.uniq
781
781
  pending_names = summary_pending.map { |entry| entry.fetch("member") }
@@ -784,6 +784,15 @@ module Kettle
784
784
  [*failed_hints, "kettle-family #{command} --only #{pending_names.join(",")}"]
785
785
  end
786
786
 
787
+ def template_resume_hints
788
+ member_names = visible_results.reject(&:ok?).map { |result| result_identity(result) }
789
+ member_names.concat(summary_pending.map { |entry| entry.fetch("member") })
790
+ member_names = member_names.compact.uniq.sort
791
+ return ["kettle-family template"] if member_names.empty?
792
+
793
+ ["kettle-family template --only #{member_names.join(",")}"]
794
+ end
795
+
787
796
  def release_resume_hints
788
797
  failed_hints = visible_results.reject(&:ok?).filter_map { |result| resume_hint_for(result) }.uniq
789
798
  pending_names = summary_pending.map { |entry| entry.fetch("member") }
@@ -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.3.34"
8
+ VERSION = "1.3.36"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "kettle/dev"
4
+ require "ast/crispr/ruby/prism"
4
5
 
5
6
  module Kettle
6
7
  module Family
@@ -74,12 +75,20 @@ module Kettle
74
75
  end
75
76
 
76
77
  def collect_edits(member, member_target_version)
77
- version_edits = with_dev_errors do
78
- Kettle::Dev::VersionBump.new(
79
- root: member.root,
80
- current_version: member.version,
81
- target_version: member_target_version
82
- ).edits
78
+ begin
79
+ version_edits = with_dev_errors do
80
+ Kettle::Dev::VersionBump.new(
81
+ root: member.root,
82
+ current_version: member.version,
83
+ target_version: member_target_version
84
+ ).edits
85
+ end
86
+ rescue Error => error
87
+ bump = Kettle::Dev::VersionBump.new(root: member.root, current_version: member.version, target_version: member_target_version)
88
+ computed_version_edits = prism_computed_version_edits(member, member_target_version)
89
+ raise error if computed_version_edits.empty?
90
+
91
+ version_edits = computed_version_edits + bump.send(:gemspec_version_edits)
83
92
  end
84
93
  version_edits = version_edits.map do |edit|
85
94
  if same_file?(edit.fetch(:path), member.gemspec_path)
@@ -91,6 +100,33 @@ module Kettle
91
100
  version_edits + gemspec_dependency_edits(member)
92
101
  end
93
102
 
103
+ def prism_computed_version_edits(member, target_version)
104
+ version = Gem::Version.new(target_version)
105
+ replacements = {major: version.segments[0] || 0, minor: version.segments[1] || 0, patch: version.segments[2] || 0}
106
+ Kettle::Dev::Versioning.version_file_candidates(member.root).flat_map do |path|
107
+ source = File.read(path)
108
+ analysis = Ast::Crispr::Ruby::Prism.document_context(content: source, source_label: path).ast
109
+ root = analysis.parse_result.value
110
+ nodes = Kettle::Dev::VersionBump.each_node(root).to_a
111
+ version_constant = nodes.find do |node|
112
+ node.is_a?(Prism::ConstantWriteNode) && node.name == :VERSION && node.value.is_a?(Prism::CallNode) && node.value.name == :to_s
113
+ end
114
+ next [] unless version_constant
115
+
116
+ replacements.filter_map do |method_name, replacement_value|
117
+ method = nodes.find { |node| node.is_a?(Prism::DefNode) && node.name == method_name }
118
+ literal = method&.body&.body&.last
119
+ next unless literal.is_a?(Prism::IntegerNode) || literal.is_a?(Prism::StringNode)
120
+
121
+ next if literal.is_a?(Prism::IntegerNode) && literal.value == replacement_value
122
+ next if literal.is_a?(Prism::StringNode) && literal.unescaped == replacement_value.to_s
123
+
124
+ replacement = literal.is_a?(Prism::StringNode) ? Kettle::Dev::VersionBump.quote_like(literal.location.slice, replacement_value.to_s) : replacement_value.to_s
125
+ Kettle::Dev::VersionBump.file_edit(path, source, literal.location.start_offset, literal.location.end_offset, replacement)
126
+ end
127
+ end
128
+ end
129
+
94
130
  def same_file?(left, right)
95
131
  right && File.identical?(left, right)
96
132
  rescue SystemCallError
@@ -2223,11 +2223,14 @@ module Kettle
2223
2223
  # repositories through one-at-a-time release workflows. Run those
2224
2224
  # members through the normal release scheduler first so configured
2225
2225
  # waves and their worker budget remain effective.
2226
- results.concat(current_branch_results(current_branch_members)) unless current_branch_members.empty?
2226
+ current_members = start_branch ? current_branch_members : members
2227
+ results.concat(current_branch_results(current_members)) unless current_members.empty?
2227
2228
  return results unless results.all?(&:ok?)
2228
2229
 
2229
2230
  target_members.each_with_object(results) do |member, memo|
2230
2231
  member_config = member_local_release_config(member)
2232
+ next if start_branch.nil? && BranchTargetConfig.branch_targets_for(command, member_config.release_target_branches).empty?
2233
+
2231
2234
  memo.concat(member_local_workflow(member: member, member_config: member_config).results)
2232
2235
  break memo unless memo.last&.ok?
2233
2236
  end
@@ -3786,6 +3789,7 @@ module Kettle
3786
3789
  def append_kettle_release_args(command, member: nil)
3787
3790
  command = replace_kettle_release_provider(command) if @release_secrets_broker
3788
3791
  args = []
3792
+ args << "--version=#{member.version}" if member&.version && !command_includes_arg?(command, "--version")
3789
3793
  effective_start_step = release_start_step_for(member)
3790
3794
  command, configured_skip_steps = extract_kettle_release_skip_steps(command)
3791
3795
  effective_skip_steps = (configured_skip_steps + release_skip_steps_for(member).split(",")).uniq.join(",")
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.3.34
4
+ version: 1.3.36
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -57,6 +57,26 @@ dependencies:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
59
  version: 7.1.11
60
+ - !ruby/object:Gem::Dependency
61
+ name: ast-crispr-ruby-prism
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '7.1'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 7.1.10
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '7.1'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 7.1.10
60
80
  - !ruby/object:Gem::Dependency
61
81
  name: ast-crispr-toml
62
82
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +134,7 @@ dependencies:
114
134
  version: '1.0'
115
135
  - - ">="
116
136
  - !ruby/object:Gem::Version
117
- version: 1.0.14
137
+ version: 1.0.15
118
138
  type: :runtime
119
139
  prerelease: false
120
140
  version_requirements: !ruby/object:Gem::Requirement
@@ -124,7 +144,7 @@ dependencies:
124
144
  version: '1.0'
125
145
  - - ">="
126
146
  - !ruby/object:Gem::Version
127
- version: 1.0.14
147
+ version: 1.0.15
128
148
  - !ruby/object:Gem::Dependency
129
149
  name: kettle-deps-floor
130
150
  requirement: !ruby/object:Gem::Requirement
@@ -134,7 +154,7 @@ dependencies:
134
154
  version: '0.1'
135
155
  - - ">="
136
156
  - !ruby/object:Gem::Version
137
- version: 0.1.1
157
+ version: 0.1.2
138
158
  type: :runtime
139
159
  prerelease: false
140
160
  version_requirements: !ruby/object:Gem::Requirement
@@ -144,7 +164,7 @@ dependencies:
144
164
  version: '0.1'
145
165
  - - ">="
146
166
  - !ruby/object:Gem::Version
147
- version: 0.1.1
167
+ version: 0.1.2
148
168
  - !ruby/object:Gem::Dependency
149
169
  name: kettle-dev
150
170
  requirement: !ruby/object:Gem::Requirement
@@ -154,7 +174,7 @@ dependencies:
154
174
  version: '3.1'
155
175
  - - ">="
156
176
  - !ruby/object:Gem::Version
157
- version: 3.1.25
177
+ version: 3.1.26
158
178
  type: :runtime
159
179
  prerelease: false
160
180
  version_requirements: !ruby/object:Gem::Requirement
@@ -164,7 +184,7 @@ dependencies:
164
184
  version: '3.1'
165
185
  - - ">="
166
186
  - !ruby/object:Gem::Version
167
- version: 3.1.25
187
+ version: 3.1.26
168
188
  - !ruby/object:Gem::Dependency
169
189
  name: kettle-gha-pins
170
190
  requirement: !ruby/object:Gem::Requirement
@@ -174,7 +194,7 @@ dependencies:
174
194
  version: '0.3'
175
195
  - - ">="
176
196
  - !ruby/object:Gem::Version
177
- version: 0.3.18
197
+ version: 0.3.20
178
198
  type: :runtime
179
199
  prerelease: false
180
200
  version_requirements: !ruby/object:Gem::Requirement
@@ -184,7 +204,7 @@ dependencies:
184
204
  version: '0.3'
185
205
  - - ">="
186
206
  - !ruby/object:Gem::Version
187
- version: 0.3.18
207
+ version: 0.3.20
188
208
  - !ruby/object:Gem::Dependency
189
209
  name: kettle-jem
190
210
  requirement: !ruby/object:Gem::Requirement
@@ -214,7 +234,7 @@ dependencies:
214
234
  version: '0.1'
215
235
  - - ">="
216
236
  - !ruby/object:Gem::Version
217
- version: 0.1.20
237
+ version: 0.1.22
218
238
  type: :runtime
219
239
  prerelease: false
220
240
  version_requirements: !ruby/object:Gem::Requirement
@@ -224,7 +244,7 @@ dependencies:
224
244
  version: '0.1'
225
245
  - - ">="
226
246
  - !ruby/object:Gem::Version
227
- version: 0.1.20
247
+ version: 0.1.22
228
248
  - !ruby/object:Gem::Dependency
229
249
  name: kettle-test
230
250
  requirement: !ruby/object:Gem::Requirement
@@ -234,7 +254,7 @@ dependencies:
234
254
  version: '2.0'
235
255
  - - ">="
236
256
  - !ruby/object:Gem::Version
237
- version: 2.0.27
257
+ version: 2.0.28
238
258
  type: :runtime
239
259
  prerelease: false
240
260
  version_requirements: !ruby/object:Gem::Requirement
@@ -244,7 +264,7 @@ dependencies:
244
264
  version: '2.0'
245
265
  - - ">="
246
266
  - !ruby/object:Gem::Version
247
- version: 2.0.27
267
+ version: 2.0.28
248
268
  - !ruby/object:Gem::Dependency
249
269
  name: psych-merge
250
270
  requirement: !ruby/object:Gem::Requirement
@@ -336,7 +356,7 @@ dependencies:
336
356
  version: '1.1'
337
357
  - - ">="
338
358
  - !ruby/object:Gem::Version
339
- version: 1.1.16
359
+ version: 1.1.17
340
360
  type: :runtime
341
361
  prerelease: false
342
362
  version_requirements: !ruby/object:Gem::Requirement
@@ -346,7 +366,7 @@ dependencies:
346
366
  version: '1.1'
347
367
  - - ">="
348
368
  - !ruby/object:Gem::Version
349
- version: 1.1.16
369
+ version: 1.1.17
350
370
  - !ruby/object:Gem::Dependency
351
371
  name: bundler-audit
352
372
  requirement: !ruby/object:Gem::Requirement
@@ -404,7 +424,7 @@ dependencies:
404
424
  version: '0.1'
405
425
  - - ">="
406
426
  - !ruby/object:Gem::Version
407
- version: 0.1.4
427
+ version: 0.1.5
408
428
  type: :development
409
429
  prerelease: false
410
430
  version_requirements: !ruby/object:Gem::Requirement
@@ -414,7 +434,7 @@ dependencies:
414
434
  version: '0.1'
415
435
  - - ">="
416
436
  - !ruby/object:Gem::Version
417
- version: 0.1.4
437
+ version: 0.1.5
418
438
  - !ruby/object:Gem::Dependency
419
439
  name: appraisal2
420
440
  requirement: !ruby/object:Gem::Requirement
@@ -608,10 +628,10 @@ licenses:
608
628
  - AGPL-3.0-only
609
629
  metadata:
610
630
  homepage_uri: https://kettle-family.galtzo.com
611
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.3.34
612
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.3.34/CHANGELOG.md
631
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.3.36
632
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.3.36/CHANGELOG.md
613
633
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
614
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.3.34
634
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.3.36
615
635
  funding_uri: https://github.com/sponsors/pboling
616
636
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
617
637
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file