kettle-family 1.2.62 → 1.2.63
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 +41 -1
- data/README.md +106 -2
- data/lib/kettle/family/cli.rb +2 -2
- data/lib/kettle/family/git_status.rb +7 -0
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +62 -8
- data.tar.gz.sig +0 -0
- metadata +16 -16
- 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: 82adc3fa76e0f5e3cea98f7a02152627353175b2e0aa2b922eeb4905aee9f1a8
|
|
4
|
+
data.tar.gz: 70094edc544adbdec3240787de1c2e7c8b22e749fe8dfb9e9dca0d97253d00f3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 571b5e2c915f5dcfa9e5415b6d4a0762f30c6fe005c248c7dd42285f3960f452b74fa8063c5ee05e9eddb2d116c7e5204c353eaed877428727ad238ba83e2d42
|
|
7
|
+
data.tar.gz: 7f7f630a5f1b06d17ffe8eeb5bef4a20579788bd0b4cebea30c0468763bdbba72cb8507920fe076396124b3cc91efe5ab30c683864a9d9bc4c523b5738142162
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,44 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [1.2.63] - 2026-08-28
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.2.63][1.2.63t]
|
|
36
|
+
- COVERAGE: 93.07% -- 5332/5729 lines in 33 files
|
|
37
|
+
- BRANCH COVERAGE: 76.07% -- 2152/2829 branches in 33 files
|
|
38
|
+
- 29.62% documented
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- Document release-wave dependency propagation and later-wave lockfile refresh behavior.
|
|
43
|
+
|
|
44
|
+
- Document kettle-family bup as the pre-templating bundle update workflow.
|
|
45
|
+
|
|
46
|
+
- Document the complete kettle-family command reference, including bup and workflow aliases.
|
|
47
|
+
|
|
48
|
+
- Clarify that executed kettle-family bup runs commit successful lockfile updates unless --no-commit is supplied.
|
|
49
|
+
|
|
50
|
+
- [kc] kettle-jem/prepare: updated 10 project files:
|
|
51
|
+
- configuration (1)
|
|
52
|
+
- dependencies (9)
|
|
53
|
+
|
|
54
|
+
- [kc] kettle-jem/template: updated 7 project files:
|
|
55
|
+
- code and tests (1)
|
|
56
|
+
- configuration (1)
|
|
57
|
+
- dependencies (1)
|
|
58
|
+
- documentation (2)
|
|
59
|
+
- other (2)
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
|
|
63
|
+
- Reject template autostashes outside lib/, spec/, and test/ before any member is mutated.
|
|
64
|
+
|
|
65
|
+
- Family release waves now refresh dependent lockfiles even when their declared dependency floors already match a newly released family version.
|
|
66
|
+
|
|
67
|
+
- Restore the runtime version_gem dependency required by the version API.
|
|
68
|
+
|
|
69
|
+
- Install refreshed downstream release bundles before invoking their release commands.
|
|
70
|
+
|
|
33
71
|
## [1.2.62] - 2026-08-26
|
|
34
72
|
|
|
35
73
|
- TAG: [v1.2.62][1.2.62t]
|
|
@@ -2207,7 +2245,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
2207
2245
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
2208
2246
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
2209
2247
|
|
|
2210
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.
|
|
2248
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.63...HEAD
|
|
2249
|
+
[1.2.63]: https://github.com/kettle-dev/kettle-family/compare/v1.2.62...v1.2.63
|
|
2250
|
+
[1.2.63t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.63
|
|
2211
2251
|
[1.2.62]: https://github.com/kettle-dev/kettle-family/compare/v1.2.61...v1.2.62
|
|
2212
2252
|
[1.2.62t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.62
|
|
2213
2253
|
[1.2.61]: https://github.com/kettle-dev/kettle-family/compare/v1.2.60...v1.2.61
|
data/README.md
CHANGED
|
@@ -97,7 +97,9 @@ The _amazing_ test matrix is powered by the kettle-dev stack.
|
|
|
97
97
|
|
|
98
98
|
</details>
|
|
99
99
|
|
|
100
|
-
### Enterprise Support
|
|
100
|
+
### Enterprise Support
|
|
101
|
+
|
|
102
|
+
[](https://tidelift.com/subscription/pkg/rubygems-kettle-family?utm_source=rubygems-kettle-family&utm_medium=referral&utm_campaign=readme)
|
|
101
103
|
|
|
102
104
|
Available as part of the Tidelift Subscription.
|
|
103
105
|
|
|
@@ -260,6 +262,42 @@ completed an earlier release wave; once the dependency is available, the
|
|
|
260
262
|
member resolves it from the registry. Release lockfile normalization always
|
|
261
263
|
disables local paths regardless of this strategy.
|
|
262
264
|
|
|
265
|
+
### Release waves and dependency refresh
|
|
266
|
+
|
|
267
|
+
Release waves are both a sequencing mechanism and a dependency propagation
|
|
268
|
+
mechanism. `kettle-family` does not start a later wave until every member in
|
|
269
|
+
the current wave has succeeded. Members in one wave may run concurrently; if
|
|
270
|
+
one member fails, other members already running in that wave are allowed to
|
|
271
|
+
finish, but later waves do not start.
|
|
272
|
+
|
|
273
|
+
After a wave succeeds during an executed publish run, `kettle-family`
|
|
274
|
+
automatically reconciles declared family dependency floors in the remaining
|
|
275
|
+
members. This propagation still runs when a member's declared floor already
|
|
276
|
+
matches the newly released version: its lockfiles may still resolve the prior
|
|
277
|
+
published release. Once all selected family dependencies of a later member have
|
|
278
|
+
completed, it waits for their published versions to become available in the
|
|
279
|
+
registry and runs a targeted lockfile refresh equivalent to:
|
|
280
|
+
|
|
281
|
+
```console
|
|
282
|
+
bundle lock --update RELEASED_MEMBER_NAMES --add-checksums
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
It then installs that exact locked bundle before starting the dependent release.
|
|
286
|
+
|
|
287
|
+
The same targeted refresh is applied to the member's CI/Appraisal bundle
|
|
288
|
+
lockfiles when those files are present. The refreshed lockfiles and dependency
|
|
289
|
+
floor changes are committed before that member's release starts, so later
|
|
290
|
+
waves test and publish against the versions produced by earlier waves rather
|
|
291
|
+
than stale published versions. A resumed `--only pend` publish also reconciles
|
|
292
|
+
family dependencies that were published by an earlier invocation.
|
|
293
|
+
|
|
294
|
+
This propagation runs for `kettle-family release --execute --publish` when
|
|
295
|
+
`release.auto_dependency_floors` is enabled (the default). It is distinct from
|
|
296
|
+
`release.normalize_lockfiles`, which removes local-path and checksum problems
|
|
297
|
+
before an individual release. A dry run or a standalone member
|
|
298
|
+
`kettle-release` cannot update downstream family lockfiles. Registry
|
|
299
|
+
propagation is retried before the family reports a dependency refresh failure.
|
|
300
|
+
|
|
263
301
|
For `changelog.mode: root`, release commands pass `K_CHANGELOG_GEM_NAME` as the
|
|
264
302
|
configured family name and `K_CHANGELOG_VERSION_FILE` when `version_file` is
|
|
265
303
|
configured, so `kettle-changelog` can operate from a repository root without a
|
|
@@ -336,6 +374,48 @@ publish command explicitly includes `--secrets-provider`.
|
|
|
336
374
|
|
|
337
375
|
## 🔧 Basic Usage
|
|
338
376
|
|
|
377
|
+
### Command reference
|
|
378
|
+
|
|
379
|
+
The command names below are available from `kettle-family --help`:
|
|
380
|
+
|
|
381
|
+
| Command | Purpose |
|
|
382
|
+
|---------|---------|
|
|
383
|
+
| `version` | Print the kettle-family version. |
|
|
384
|
+
| `help` | Print top-level or command-specific help. |
|
|
385
|
+
| `mise-trust` | Trust mise configuration for the family. |
|
|
386
|
+
| `discover` | Discover members and print their execution order. |
|
|
387
|
+
| `plan` | Alias for `discover`. |
|
|
388
|
+
| `report` | Print family discovery and configuration details. |
|
|
389
|
+
| `metadata` | Print member version, Ruby floor, license, and author metadata. |
|
|
390
|
+
| `check` | Run internal read-only readiness checks. |
|
|
391
|
+
| `clean-unreleased` | Uninstall locally installed family versions newer than released versions. |
|
|
392
|
+
| `reconcile-releases` | Create verified missing GitHub Releases for published tags. |
|
|
393
|
+
| `reset` | Reset a managed family artifact, such as release lockfiles. |
|
|
394
|
+
| `test` | Run the configured test workflow for each selected member. |
|
|
395
|
+
| `lint` | Run the configured lint workflow for each selected member. |
|
|
396
|
+
| `docs` | Run the configured documentation workflow for each selected member. |
|
|
397
|
+
| `template` | Apply the configured `kettle-jem` template for each selected member. |
|
|
398
|
+
| `gha-sha-pins` | Inspect or update GitHub Actions SHA pins. |
|
|
399
|
+
| `bup` | Run `bundle update --all`, or update a named dependency, per member. |
|
|
400
|
+
| `bupb` | Run `bundle update --bundler` per member. |
|
|
401
|
+
| `bex` | Run an arbitrary `bundle exec` command per member. |
|
|
402
|
+
| `install` | Build and install selected local family gems. |
|
|
403
|
+
| `bump` | Check, plan, or execute family version alignment. |
|
|
404
|
+
| `bump-version` | Deprecated alias for `bump`. |
|
|
405
|
+
| `add-changelog` | Add a structured entry to a member's `Unreleased` section. |
|
|
406
|
+
| `release` | Prepare or publish selected member releases in dependency waves. |
|
|
407
|
+
| `push` | Push selected member repositories. |
|
|
408
|
+
| `pull` | Pull selected member repositories with rebase. |
|
|
409
|
+
| `sync` | Fetch and rebase selected member repositories and branches. |
|
|
410
|
+
| `up` | Pull with rebase, then push selected member repositories. |
|
|
411
|
+
| `branch-lanes` | Audit configured long-lived release branches. |
|
|
412
|
+
| `release-state` | Report release state for selected members. |
|
|
413
|
+
| `state` | Alias for `release-state`. |
|
|
414
|
+
|
|
415
|
+
Use `kettle-family help COMMAND` for command-specific options. Most workflow
|
|
416
|
+
commands also accept `--only`, `--exclude`, `--start-at`, `--jobs`,
|
|
417
|
+
`--execute`, `--dry-run`, `--commit`, and `--no-commit` as applicable.
|
|
418
|
+
|
|
339
419
|
Inspect discovery and release plans before executing them:
|
|
340
420
|
|
|
341
421
|
```console
|
|
@@ -402,6 +482,22 @@ Most commands accept `--json` to print a machine-readable report instead of the
|
|
|
402
482
|
text report, and `--report PATH` to write that JSON report while still printing
|
|
403
483
|
the normal text report.
|
|
404
484
|
|
|
485
|
+
Refresh member dependencies before templating when the generated project should
|
|
486
|
+
be validated against the latest compatible releases:
|
|
487
|
+
|
|
488
|
+
```console
|
|
489
|
+
kettle-family bup --execute
|
|
490
|
+
kettle-family template --execute
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
`bup` runs `bundle update --all` for every selected member. A gem name may be
|
|
494
|
+
passed to update only that dependency, for example `kettle-family bup --execute
|
|
495
|
+
kettle-test`. Executed updates commit successful lockfile changes by default;
|
|
496
|
+
use `--no-commit` for a working-tree-only refresh, or `--commit` to state the
|
|
497
|
+
default explicitly. Local dependency environment variables are preserved when
|
|
498
|
+
explicitly supplied, so use the family's local or released dependency mode
|
|
499
|
+
deliberately before running it.
|
|
500
|
+
|
|
405
501
|
Plan or update GitHub Actions workflow SHA pins across the selected family
|
|
406
502
|
members:
|
|
407
503
|
|
|
@@ -585,6 +681,14 @@ member's generated files and autostash are left in place for inspection, while
|
|
|
585
681
|
successful or unreached members are restored normally. A successful run always
|
|
586
682
|
restores its autostashes regardless of this option.
|
|
587
683
|
|
|
684
|
+
Before creating any autostash, the workflow checks every selected member
|
|
685
|
+
checkout. Automatic stashing is allowed only when all dirty paths are under
|
|
686
|
+
`lib/`, `spec/`, or `test/`; changes elsewhere, including changelogs, lockfiles,
|
|
687
|
+
configuration, and generated workflow files, fail the run before templating
|
|
688
|
+
starts and are listed in the error. This preflight is separate from
|
|
689
|
+
`--no-cleanup`: the latter preserves a failed template for debugging, while
|
|
690
|
+
`--no-autostash` disables even the permitted source/test stashes.
|
|
691
|
+
|
|
588
692
|
| Mark | Meaning |
|
|
589
693
|
|------|---------|
|
|
590
694
|
| `>` | A phase or command step started. |
|
|
@@ -871,7 +975,7 @@ Thanks for RTFM. ☺️
|
|
|
871
975
|
[📌gitmoji]: https://gitmoji.dev
|
|
872
976
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
873
977
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
874
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.
|
|
978
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.729-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
875
979
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
876
980
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
877
981
|
[📄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
|
@@ -61,8 +61,8 @@ module Kettle
|
|
|
61
61
|
options[:commit] = false
|
|
62
62
|
end
|
|
63
63
|
base.option :allow_dirty, long: "--allow-dirty", desc: "Reserved for compatibility; member repos manage their own commit safety"
|
|
64
|
-
base.option :autostash, long: "--autostash", desc: "
|
|
65
|
-
base.option :no_autostash, long: "--no-autostash", desc: "
|
|
64
|
+
base.option :autostash, long: "--autostash", desc: "Allow automatic stashing of eligible lib/, spec/, and test/ changes"
|
|
65
|
+
base.option :no_autostash, long: "--no-autostash", desc: "Disable automatic stashing and fail when a member worktree is dirty" do
|
|
66
66
|
options[:autostash] = false
|
|
67
67
|
end
|
|
68
68
|
end
|
|
@@ -16,6 +16,13 @@ module Kettle
|
|
|
16
16
|
|
|
17
17
|
stdout.lines.map(&:chomp).reject(&:empty?)
|
|
18
18
|
end
|
|
19
|
+
|
|
20
|
+
def self.path_from_status_line(status_line)
|
|
21
|
+
line = status_line.to_s
|
|
22
|
+
path = (line.length >= 3 && line[2] == " ") ? line[3..] : line
|
|
23
|
+
path = path.to_s.strip
|
|
24
|
+
path.include?(" -> ") ? path.split(" -> ", 2).last : path
|
|
25
|
+
end
|
|
19
26
|
end
|
|
20
27
|
end
|
|
21
28
|
end
|
|
@@ -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.63"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
@@ -59,6 +59,7 @@ module Kettle
|
|
|
59
59
|
],
|
|
60
60
|
"bupb" => %w[bundle update --bundler]
|
|
61
61
|
}.freeze
|
|
62
|
+
TEMPLATE_AUTOSTASH_ALLOWED_DIRECTORIES = %w[lib spec test].freeze
|
|
62
63
|
PRE_TEMPLATE_BOOTSTRAP_GEMS = %w[nomono kettle-dev].freeze
|
|
63
64
|
GIT_SYNC_COMMANDS = {
|
|
64
65
|
"push" => [["push", %w[git push]]],
|
|
@@ -213,6 +214,9 @@ module Kettle
|
|
|
213
214
|
end
|
|
214
215
|
checkout_preflight = [] unless checkout_preflight.all?(&:ok?)
|
|
215
216
|
|
|
217
|
+
dirty_preflight = template_dirty_worktree_preflight_results
|
|
218
|
+
return checkout_preflight + dirty_preflight unless dirty_preflight.all?(&:ok?)
|
|
219
|
+
|
|
216
220
|
sync_results, stashes = template_worktree_sync_results(runner: runner)
|
|
217
221
|
unless sync_results.all?(&:ok?)
|
|
218
222
|
return checkout_preflight + sync_results + restore_template_autostashes(
|
|
@@ -253,8 +257,9 @@ module Kettle
|
|
|
253
257
|
template_sync_members.each do |member|
|
|
254
258
|
dirty_paths = GitStatus.dirty_paths(member.root)
|
|
255
259
|
if dirty_paths.any?
|
|
256
|
-
|
|
257
|
-
|
|
260
|
+
blocked_paths = template_blocking_dirty_paths(dirty_paths)
|
|
261
|
+
if blocked_paths.any?
|
|
262
|
+
results << template_dirty_worktree_result(member, blocked_paths)
|
|
258
263
|
break
|
|
259
264
|
end
|
|
260
265
|
|
|
@@ -283,6 +288,27 @@ module Kettle
|
|
|
283
288
|
[results, stashes]
|
|
284
289
|
end
|
|
285
290
|
|
|
291
|
+
def template_dirty_worktree_preflight_results
|
|
292
|
+
template_sync_members.filter_map do |member|
|
|
293
|
+
dirty_paths = GitStatus.dirty_paths(member.root)
|
|
294
|
+
blocked_paths = template_blocking_dirty_paths(dirty_paths)
|
|
295
|
+
next if blocked_paths.empty?
|
|
296
|
+
|
|
297
|
+
template_dirty_worktree_result(member, blocked_paths)
|
|
298
|
+
end
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
def template_blocking_dirty_paths(dirty_paths)
|
|
302
|
+
return dirty_paths unless autostash
|
|
303
|
+
|
|
304
|
+
dirty_paths.reject { |path| template_autostash_allowed_path?(path) }
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def template_autostash_allowed_path?(status_line)
|
|
308
|
+
path = GitStatus.path_from_status_line(status_line)
|
|
309
|
+
TEMPLATE_AUTOSTASH_ALLOWED_DIRECTORIES.include?(path.split("/", 2).first)
|
|
310
|
+
end
|
|
311
|
+
|
|
286
312
|
def restore_template_autostashes(stashes, runner:, preserve_members: [])
|
|
287
313
|
preserve_members = Array(preserve_members).map(&:to_s)
|
|
288
314
|
stashes.reverse_each.map do |stash|
|
|
@@ -379,7 +405,7 @@ module Kettle
|
|
|
379
405
|
end
|
|
380
406
|
|
|
381
407
|
def template_generated_lockfile_path?(status_line)
|
|
382
|
-
path =
|
|
408
|
+
path = GitStatus.path_from_status_line(status_line)
|
|
383
409
|
[
|
|
384
410
|
"Gemfile.lock",
|
|
385
411
|
"Appraisal.root.gemfile.lock",
|
|
@@ -449,11 +475,17 @@ module Kettle
|
|
|
449
475
|
end
|
|
450
476
|
|
|
451
477
|
def template_dirty_worktree_result(member, dirty_paths)
|
|
478
|
+
stash_guidance = if autostash
|
|
479
|
+
"automatic template autostash is limited to lib/, spec/, and test/ files"
|
|
480
|
+
else
|
|
481
|
+
"automatic template autostash is disabled"
|
|
482
|
+
end
|
|
452
483
|
template_sync_failure_result(
|
|
453
484
|
member,
|
|
454
485
|
[
|
|
455
|
-
"dirty worktree blocks template sync;
|
|
456
|
-
*dirty_paths
|
|
486
|
+
"dirty worktree blocks template sync; clean these files before retrying:",
|
|
487
|
+
*dirty_paths.map { |path| " #{GitStatus.path_from_status_line(path)}" },
|
|
488
|
+
stash_guidance
|
|
457
489
|
].join("\n"),
|
|
458
490
|
reason: "dirty worktree blocks template sync"
|
|
459
491
|
)
|
|
@@ -1471,16 +1503,19 @@ module Kettle
|
|
|
1471
1503
|
mode: execute ? :execute : :dry_run
|
|
1472
1504
|
).results
|
|
1473
1505
|
memo.concat(floor_results)
|
|
1474
|
-
return if floor_results.empty?
|
|
1475
1506
|
return if floor_results.any? && !floor_results.all?(&:ok?)
|
|
1476
1507
|
|
|
1477
1508
|
append_dependency_floor_lockfile_results(released_members: released_members, dependent_members: lockfile_ready_dependent_members, runner: runner, memo: memo)
|
|
1478
1509
|
return if memo.any? && !memo.last.ok?
|
|
1479
1510
|
|
|
1511
|
+
append_dependency_floor_bundle_install_results(dependent_members: lockfile_ready_dependent_members, runner: runner, memo: memo)
|
|
1512
|
+
return if memo.any? && !memo.last.ok?
|
|
1513
|
+
|
|
1480
1514
|
append_dependency_floor_ci_bundle_results(released_members: released_members, dependent_members: lockfile_ready_dependent_members, runner: runner, memo: memo)
|
|
1481
1515
|
return if memo.any? && !memo.last.ok?
|
|
1482
1516
|
|
|
1483
|
-
|
|
1517
|
+
reconciled_members = (floor_results.map(&:member_name) + lockfile_ready_dependent_members.map(&:name)).uniq
|
|
1518
|
+
commit_dependency_floor_changes(dependent_members: reconciled_members, runner: runner, memo: memo) if reconciled_members.any? && execute && commit
|
|
1484
1519
|
end
|
|
1485
1520
|
|
|
1486
1521
|
def dependent_members_depending_on(released_members:, dependent_members:)
|
|
@@ -1528,6 +1563,25 @@ module Kettle
|
|
|
1528
1563
|
end
|
|
1529
1564
|
end
|
|
1530
1565
|
|
|
1566
|
+
# `bundle lock` deliberately updates only resolution metadata. Install the
|
|
1567
|
+
# resulting locked bundle before invoking the dependent's `bundle exec
|
|
1568
|
+
# kettle-release`, otherwise a just-published family gem can be absent
|
|
1569
|
+
# from the local RubyGems installation.
|
|
1570
|
+
def append_dependency_floor_bundle_install_results(dependent_members:, runner:, memo:)
|
|
1571
|
+
return unless execute && publish
|
|
1572
|
+
return if dependent_members.empty?
|
|
1573
|
+
|
|
1574
|
+
dependent_members.each do |member|
|
|
1575
|
+
memo << runner.call(
|
|
1576
|
+
member: member,
|
|
1577
|
+
phase: "dependency_floor_bundle_install",
|
|
1578
|
+
command: ["bundle", "install"],
|
|
1579
|
+
env: release_lockfile_env(member)
|
|
1580
|
+
)
|
|
1581
|
+
break unless memo.last.ok?
|
|
1582
|
+
end
|
|
1583
|
+
end
|
|
1584
|
+
|
|
1531
1585
|
def wait_for_dependency_floor_lockfiles_result(member:, released_members:, runner:)
|
|
1532
1586
|
result = nil
|
|
1533
1587
|
REGISTRY_WAIT_ATTEMPTS.times do |index|
|
|
@@ -1811,7 +1865,7 @@ module Kettle
|
|
|
1811
1865
|
"sh",
|
|
1812
1866
|
"-lc",
|
|
1813
1867
|
"files=$(git ls-files --modified --others --exclude-standard -- '*.gemspec' Gemfile.lock); " \
|
|
1814
|
-
"if [ -n \"$files\" ]; then git add -- $files && git commit -m '⬆️
|
|
1868
|
+
"if [ -n \"$files\" ]; then git add -- $files && git commit -m '⬆️ Reconcile family dependencies'; fi"
|
|
1815
1869
|
]
|
|
1816
1870
|
)
|
|
1817
1871
|
break unless memo.last.ok?
|
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.63
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -74,7 +74,7 @@ dependencies:
|
|
|
74
74
|
version: '1.0'
|
|
75
75
|
- - ">="
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
|
-
version: 1.0.
|
|
77
|
+
version: 1.0.4
|
|
78
78
|
type: :runtime
|
|
79
79
|
prerelease: false
|
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -84,14 +84,14 @@ dependencies:
|
|
|
84
84
|
version: '1.0'
|
|
85
85
|
- - ">="
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
|
-
version: 1.0.
|
|
87
|
+
version: 1.0.4
|
|
88
88
|
- !ruby/object:Gem::Dependency
|
|
89
89
|
name: kettle-dev
|
|
90
90
|
requirement: !ruby/object:Gem::Requirement
|
|
91
91
|
requirements:
|
|
92
92
|
- - ">="
|
|
93
93
|
- !ruby/object:Gem::Version
|
|
94
|
-
version: 3.0.
|
|
94
|
+
version: 3.0.14
|
|
95
95
|
- - "<"
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
97
|
version: 4.0.0
|
|
@@ -101,7 +101,7 @@ dependencies:
|
|
|
101
101
|
requirements:
|
|
102
102
|
- - ">="
|
|
103
103
|
- !ruby/object:Gem::Version
|
|
104
|
-
version: 3.0.
|
|
104
|
+
version: 3.0.14
|
|
105
105
|
- - "<"
|
|
106
106
|
- !ruby/object:Gem::Version
|
|
107
107
|
version: 4.0.0
|
|
@@ -114,7 +114,7 @@ dependencies:
|
|
|
114
114
|
version: '0.3'
|
|
115
115
|
- - ">="
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: 0.3.
|
|
117
|
+
version: 0.3.14
|
|
118
118
|
type: :runtime
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -124,7 +124,7 @@ dependencies:
|
|
|
124
124
|
version: '0.3'
|
|
125
125
|
- - ">="
|
|
126
126
|
- !ruby/object:Gem::Version
|
|
127
|
-
version: 0.3.
|
|
127
|
+
version: 0.3.14
|
|
128
128
|
- !ruby/object:Gem::Dependency
|
|
129
129
|
name: kettle-jem
|
|
130
130
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -154,7 +154,7 @@ dependencies:
|
|
|
154
154
|
version: '2.0'
|
|
155
155
|
- - ">="
|
|
156
156
|
- !ruby/object:Gem::Version
|
|
157
|
-
version: 2.0.
|
|
157
|
+
version: 2.0.21
|
|
158
158
|
type: :runtime
|
|
159
159
|
prerelease: false
|
|
160
160
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -164,7 +164,7 @@ dependencies:
|
|
|
164
164
|
version: '2.0'
|
|
165
165
|
- - ">="
|
|
166
166
|
- !ruby/object:Gem::Version
|
|
167
|
-
version: 2.0.
|
|
167
|
+
version: 2.0.21
|
|
168
168
|
- !ruby/object:Gem::Dependency
|
|
169
169
|
name: tsort
|
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -324,7 +324,7 @@ dependencies:
|
|
|
324
324
|
version: '3.2'
|
|
325
325
|
- - ">="
|
|
326
326
|
- !ruby/object:Gem::Version
|
|
327
|
-
version: 3.2.
|
|
327
|
+
version: 3.2.6
|
|
328
328
|
type: :development
|
|
329
329
|
prerelease: false
|
|
330
330
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -334,7 +334,7 @@ dependencies:
|
|
|
334
334
|
version: '3.2'
|
|
335
335
|
- - ">="
|
|
336
336
|
- !ruby/object:Gem::Version
|
|
337
|
-
version: 3.2.
|
|
337
|
+
version: 3.2.6
|
|
338
338
|
- !ruby/object:Gem::Dependency
|
|
339
339
|
name: ruby-progressbar
|
|
340
340
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -378,7 +378,7 @@ dependencies:
|
|
|
378
378
|
version: '2.0'
|
|
379
379
|
- - ">="
|
|
380
380
|
- !ruby/object:Gem::Version
|
|
381
|
-
version: 2.0.
|
|
381
|
+
version: 2.0.12
|
|
382
382
|
type: :development
|
|
383
383
|
prerelease: false
|
|
384
384
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -388,7 +388,7 @@ dependencies:
|
|
|
388
388
|
version: '2.0'
|
|
389
389
|
- - ">="
|
|
390
390
|
- !ruby/object:Gem::Version
|
|
391
|
-
version: 2.0.
|
|
391
|
+
version: 2.0.12
|
|
392
392
|
description: "\U0001F469\U0001F469\U0001F467\U0001F467 Kettle::Family provides
|
|
393
393
|
scripts and conventions for coordinating related Ruby gems as one family."
|
|
394
394
|
email:
|
|
@@ -441,10 +441,10 @@ licenses:
|
|
|
441
441
|
- AGPL-3.0-only
|
|
442
442
|
metadata:
|
|
443
443
|
homepage_uri: https://kettle-family.galtzo.com
|
|
444
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.
|
|
445
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.
|
|
444
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.63
|
|
445
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.63/CHANGELOG.md
|
|
446
446
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
447
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.
|
|
447
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.63
|
|
448
448
|
funding_uri: https://github.com/sponsors/pboling
|
|
449
449
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
450
450
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
metadata.gz.sig
CHANGED
|
Binary file
|