kettle-family 0.2.6 → 0.2.7
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 +16 -1
- data/README.md +1 -1
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +66 -2
- data.tar.gz.sig +0 -0
- metadata +9 -29
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3dfb2d02f39f7c5b6e0bbf8398440cdce3300490cab3db8aad780b0d4f2b2b23
|
|
4
|
+
data.tar.gz: 3354f6c528b63eaee745d87438fb41b21777d51d0accf30c1d270ac61189db96
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2bf468aac31e154c72514ef15100393038244ea081cf4c3d2ee48369e140919edf273029cca70d500dd3f999e9d14cd7165f85560aa63662f1a3c1cacd9761fe
|
|
7
|
+
data.tar.gz: 613218aa97433a66acb95849775523a38749267e7fcbf493998def269ccaadabe15d59d9d91f76a08dd436dcf2f9f73540a40372cf38a062e12dbc9c69e28d20
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,19 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [0.2.7] - 2026-07-15
|
|
34
|
+
|
|
35
|
+
- TAG: [v0.2.7][0.2.7t]
|
|
36
|
+
- COVERAGE: 95.20% -- 2342/2460 lines in 23 files
|
|
37
|
+
- BRANCH COVERAGE: 76.92% -- 780/1014 branches in 23 files
|
|
38
|
+
- 29.29% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Family release now waits for just-published prerequisite family gems to appear
|
|
43
|
+
in the gem server registry before continuing dependent lockfile normalization
|
|
44
|
+
and release steps.
|
|
45
|
+
|
|
33
46
|
## [0.2.6] - 2026-07-14
|
|
34
47
|
|
|
35
48
|
- TAG: [v0.2.6][0.2.6t]
|
|
@@ -686,7 +699,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
686
699
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
687
700
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
688
701
|
|
|
689
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v0.2.
|
|
702
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v0.2.7...HEAD
|
|
703
|
+
[0.2.7]: https://github.com/kettle-dev/kettle-family/compare/v0.2.6...v0.2.7
|
|
704
|
+
[0.2.7t]: https://github.com/kettle-dev/kettle-family/releases/tag/v0.2.7
|
|
690
705
|
[0.2.6]: https://github.com/kettle-dev/kettle-family/compare/v0.2.5...v0.2.6
|
|
691
706
|
[0.2.6t]: https://github.com/kettle-dev/kettle-family/releases/tag/v0.2.6
|
|
692
707
|
[0.2.5]: https://github.com/kettle-dev/kettle-family/compare/v0.2.4...v0.2.5
|
data/README.md
CHANGED
|
@@ -603,7 +603,7 @@ Thanks for RTFM. ☺️
|
|
|
603
603
|
[📌gitmoji]: https://gitmoji.dev
|
|
604
604
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
605
605
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
606
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.
|
|
606
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.460-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
607
607
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
608
608
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
609
609
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -43,6 +43,8 @@ module Kettle
|
|
|
43
43
|
"BUNDLE_SILENCE_ROOT_WARNING" => "true",
|
|
44
44
|
"BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES" => "true"
|
|
45
45
|
}.freeze
|
|
46
|
+
REGISTRY_WAIT_ATTEMPTS = 15
|
|
47
|
+
REGISTRY_WAIT_INTERVAL_SECONDS = 15
|
|
46
48
|
|
|
47
49
|
def initialize(command:, config:, members:, execute: false, accept: true, commit: true, allow_dirty: false, publish: false, push: false, tag: false, start_step: nil, skip_steps: nil, local_ci: false, continue_ci_failures: false, skip_bundle_audit: false, auto_dependency_floors: nil, gha_sha_pins_upgrade: "patch", gha_sha_pins_check: false, env_overrides: {}, debug: false, gem_signing_password: nil, jobs: nil, progress_io: nil, bup_args: [], bex_args: [], start_member: nil, start_branch: nil)
|
|
48
50
|
@command = command
|
|
@@ -497,15 +499,33 @@ module Kettle
|
|
|
497
499
|
|
|
498
500
|
require_relative "dependency_floor"
|
|
499
501
|
|
|
502
|
+
affected_dependent_members = dependent_members_depending_on(released_members: released_members, dependent_members: dependent_members)
|
|
500
503
|
floor_results = DependencyFloor.new(
|
|
501
504
|
released_members: released_members,
|
|
502
505
|
dependent_members: dependent_members,
|
|
503
506
|
mode: execute ? :execute : :dry_run
|
|
504
507
|
).results
|
|
505
508
|
memo.concat(floor_results)
|
|
506
|
-
return
|
|
509
|
+
return if floor_results.any? && !floor_results.all?(&:ok?)
|
|
507
510
|
|
|
508
|
-
commit_dependency_floor_changes(dependent_members: floor_results.map(&:member_name), runner: runner, memo: memo) if execute && commit
|
|
511
|
+
commit_dependency_floor_changes(dependent_members: floor_results.map(&:member_name), runner: runner, memo: memo) if floor_results.any? && execute && commit
|
|
512
|
+
return if memo.any? && !memo.last.ok?
|
|
513
|
+
|
|
514
|
+
append_registry_wait_result(released_members: released_members, dependent_members: affected_dependent_members, memo: memo)
|
|
515
|
+
end
|
|
516
|
+
|
|
517
|
+
def dependent_members_depending_on(released_members:, dependent_members:)
|
|
518
|
+
released_names = released_members.map(&:name)
|
|
519
|
+
dependent_members.select do |member|
|
|
520
|
+
Array(member.dependencies).map(&:to_s).any? { |dependency| released_names.include?(dependency) }
|
|
521
|
+
end
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
def append_registry_wait_result(released_members:, dependent_members:, memo:)
|
|
525
|
+
return unless execute && publish
|
|
526
|
+
return if dependent_members.empty?
|
|
527
|
+
|
|
528
|
+
memo << wait_for_registry_result(released_members: released_members, dependent_members: dependent_members)
|
|
509
529
|
end
|
|
510
530
|
|
|
511
531
|
def commit_dependency_floor_changes(dependent_members:, runner:, memo:)
|
|
@@ -664,6 +684,50 @@ module Kettle
|
|
|
664
684
|
raise Error, "could not parse published versions for #{gem_name}: #{error.message}"
|
|
665
685
|
end
|
|
666
686
|
|
|
687
|
+
def wait_for_registry_result(released_members:, dependent_members:)
|
|
688
|
+
started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
689
|
+
missing = []
|
|
690
|
+
attempts = 0
|
|
691
|
+
REGISTRY_WAIT_ATTEMPTS.times do |index|
|
|
692
|
+
attempts = index + 1
|
|
693
|
+
missing = released_members.reject { |member| released_version?(member.name, member.version) }
|
|
694
|
+
break if missing.empty?
|
|
695
|
+
|
|
696
|
+
sleep(REGISTRY_WAIT_INTERVAL_SECONDS) if attempts < REGISTRY_WAIT_ATTEMPTS
|
|
697
|
+
end
|
|
698
|
+
elapsed = Process.clock_gettime(Process::CLOCK_MONOTONIC) - started_at
|
|
699
|
+
dependency_names = dependent_members.map(&:name).join(", ")
|
|
700
|
+
if missing.empty?
|
|
701
|
+
CommandResult.new(
|
|
702
|
+
member_name: dependency_names,
|
|
703
|
+
phase: "release_wait_for_registry",
|
|
704
|
+
command: ["internal", "wait-for-registry", released_members.map { |member| "#{member.name}-#{member.version}" }.join(",")],
|
|
705
|
+
workdir: config.root,
|
|
706
|
+
status: 0,
|
|
707
|
+
success: true,
|
|
708
|
+
stdout: "registry contains #{released_members.map { |member| "#{member.name} #{member.version}" }.join(", ")} after #{attempts} check(s)",
|
|
709
|
+
stderr: "",
|
|
710
|
+
elapsed_seconds: elapsed,
|
|
711
|
+
skipped: false,
|
|
712
|
+
reason: "dependent members: #{dependency_names}"
|
|
713
|
+
)
|
|
714
|
+
else
|
|
715
|
+
CommandResult.new(
|
|
716
|
+
member_name: dependency_names,
|
|
717
|
+
phase: "release_wait_for_registry",
|
|
718
|
+
command: ["internal", "wait-for-registry", released_members.map { |member| "#{member.name}-#{member.version}" }.join(",")],
|
|
719
|
+
workdir: config.root,
|
|
720
|
+
status: 1,
|
|
721
|
+
success: false,
|
|
722
|
+
stdout: "timed out waiting for #{missing.map { |member| "#{member.name} #{member.version}" }.join(", ")} after #{attempts} check(s)",
|
|
723
|
+
stderr: "",
|
|
724
|
+
elapsed_seconds: elapsed,
|
|
725
|
+
skipped: false,
|
|
726
|
+
reason: "dependent members: #{dependency_names}"
|
|
727
|
+
)
|
|
728
|
+
end
|
|
729
|
+
end
|
|
730
|
+
|
|
667
731
|
def already_released_result(member)
|
|
668
732
|
tag = release_tag_name(member.version)
|
|
669
733
|
current_release_head = released_version_current_head?(member, tag)
|
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: 0.2.
|
|
4
|
+
version: 0.2.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -99,26 +99,6 @@ dependencies:
|
|
|
99
99
|
- - "~>"
|
|
100
100
|
- !ruby/object:Gem::Version
|
|
101
101
|
version: '0.2'
|
|
102
|
-
- !ruby/object:Gem::Dependency
|
|
103
|
-
name: version_gem
|
|
104
|
-
requirement: !ruby/object:Gem::Requirement
|
|
105
|
-
requirements:
|
|
106
|
-
- - "~>"
|
|
107
|
-
- !ruby/object:Gem::Version
|
|
108
|
-
version: '1.1'
|
|
109
|
-
- - ">="
|
|
110
|
-
- !ruby/object:Gem::Version
|
|
111
|
-
version: 1.1.13
|
|
112
|
-
type: :runtime
|
|
113
|
-
prerelease: false
|
|
114
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
115
|
-
requirements:
|
|
116
|
-
- - "~>"
|
|
117
|
-
- !ruby/object:Gem::Version
|
|
118
|
-
version: '1.1'
|
|
119
|
-
- - ">="
|
|
120
|
-
- !ruby/object:Gem::Version
|
|
121
|
-
version: 1.1.13
|
|
122
102
|
- !ruby/object:Gem::Dependency
|
|
123
103
|
name: bundler-audit
|
|
124
104
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -216,7 +196,7 @@ dependencies:
|
|
|
216
196
|
version: '3.1'
|
|
217
197
|
- - ">="
|
|
218
198
|
- !ruby/object:Gem::Version
|
|
219
|
-
version: 3.1.
|
|
199
|
+
version: 3.1.9
|
|
220
200
|
type: :development
|
|
221
201
|
prerelease: false
|
|
222
202
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -226,7 +206,7 @@ dependencies:
|
|
|
226
206
|
version: '3.1'
|
|
227
207
|
- - ">="
|
|
228
208
|
- !ruby/object:Gem::Version
|
|
229
|
-
version: 3.1.
|
|
209
|
+
version: 3.1.9
|
|
230
210
|
- !ruby/object:Gem::Dependency
|
|
231
211
|
name: ruby-progressbar
|
|
232
212
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -250,7 +230,7 @@ dependencies:
|
|
|
250
230
|
version: '1.0'
|
|
251
231
|
- - ">="
|
|
252
232
|
- !ruby/object:Gem::Version
|
|
253
|
-
version: 1.0.
|
|
233
|
+
version: 1.0.6
|
|
254
234
|
type: :development
|
|
255
235
|
prerelease: false
|
|
256
236
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -260,7 +240,7 @@ dependencies:
|
|
|
260
240
|
version: '1.0'
|
|
261
241
|
- - ">="
|
|
262
242
|
- !ruby/object:Gem::Version
|
|
263
|
-
version: 1.0.
|
|
243
|
+
version: 1.0.6
|
|
264
244
|
- !ruby/object:Gem::Dependency
|
|
265
245
|
name: gitmoji-regex
|
|
266
246
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -341,10 +321,10 @@ licenses:
|
|
|
341
321
|
- AGPL-3.0-only
|
|
342
322
|
metadata:
|
|
343
323
|
homepage_uri: https://kettle-family.galtzo.com
|
|
344
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.2.
|
|
345
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.2.
|
|
324
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.2.7
|
|
325
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.2.7/CHANGELOG.md
|
|
346
326
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
347
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.2.
|
|
327
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.2.7
|
|
348
328
|
funding_uri: https://github.com/sponsors/pboling
|
|
349
329
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
350
330
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
|
@@ -374,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
374
354
|
- !ruby/object:Gem::Version
|
|
375
355
|
version: '0'
|
|
376
356
|
requirements: []
|
|
377
|
-
rubygems_version: 4.0.
|
|
357
|
+
rubygems_version: 4.0.16
|
|
378
358
|
specification_version: 4
|
|
379
359
|
summary: "\U0001F469\U0001F469\U0001F467\U0001F467 CLI helpers for managing related
|
|
380
360
|
Ruby gems as a family."
|
metadata.gz.sig
CHANGED
|
Binary file
|