kettle-family 0.1.23 → 0.1.24
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 +17 -1
- data/README.md +1 -1
- data/lib/kettle/family/command_runner.rb +1 -1
- data/lib/kettle/family/git_status.rb +1 -1
- data/lib/kettle/family/readiness_check.rb +24 -4
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +17 -3
- data.tar.gz.sig +2 -3
- metadata +4 -4
- 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: 64a7d10673974c0f1e723d515d57aa56cb1525b127d64cc93a9652b692d1d90a
|
|
4
|
+
data.tar.gz: 9f372bfe5ef8546da4101652156e268edd571b31a88a2bbe14d1e308f6263783
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a39b986f3884a328c9668ed4730f8d832eeae1e1eb0ecff2a692aa9ec8b10c90dab13191764357555fe24fd97bd71e46952de12e0e17dd1a41e8a17d591c2932
|
|
7
|
+
data.tar.gz: 017010b6d3660e00d8e451240b923815ebf163a03fb43cdd676f2c95fb3a8e4825ee9fd584646ccbcf31fcb9f6d0f025f55f6f7b5657ebeedab5809add07bf86
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,20 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [0.1.24] - 2026-06-27
|
|
34
|
+
|
|
35
|
+
- TAG: [v0.1.24][0.1.24t]
|
|
36
|
+
- COVERAGE: 95.07% -- 1831/1926 lines in 21 files
|
|
37
|
+
- BRANCH COVERAGE: 74.47% -- 627/842 branches in 21 files
|
|
38
|
+
- 38.60% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- `kettle-family release --env NAME_LOCAL=/path` now allows release readiness
|
|
43
|
+
checks to use matching local source lockfile paths for recovery releases.
|
|
44
|
+
- Quiet template and release commands now unset Bundler/RubyGems debug
|
|
45
|
+
environment variables whose presence enables resolver/debug output.
|
|
46
|
+
|
|
33
47
|
## [0.1.23] - 2026-06-27
|
|
34
48
|
|
|
35
49
|
- TAG: [v0.1.23][0.1.23t]
|
|
@@ -427,7 +441,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
427
441
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
428
442
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
429
443
|
|
|
430
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v0.1.
|
|
444
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v0.1.24...HEAD
|
|
445
|
+
[0.1.24]: https://github.com/kettle-dev/kettle-family/compare/v0.1.23...v0.1.24
|
|
446
|
+
[0.1.24t]: https://github.com/kettle-dev/kettle-family/releases/tag/v0.1.24
|
|
431
447
|
[0.1.23]: https://github.com/kettle-dev/kettle-family/compare/v0.1.22...v0.1.23
|
|
432
448
|
[0.1.23t]: https://github.com/kettle-dev/kettle-family/releases/tag/v0.1.23
|
|
433
449
|
[0.1.22]: https://github.com/kettle-dev/kettle-family/compare/v0.1.21...v0.1.22
|
data/README.md
CHANGED
|
@@ -571,7 +571,7 @@ Thanks for RTFM. ☺️
|
|
|
571
571
|
[📌gitmoji]: https://gitmoji.dev
|
|
572
572
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
573
573
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
574
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-1.
|
|
574
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-1.926-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
575
575
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
576
576
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
577
577
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -292,7 +292,7 @@ module Kettle
|
|
|
292
292
|
argv = normalize_command(command)
|
|
293
293
|
return argv unless mise_configured?(member)
|
|
294
294
|
|
|
295
|
-
injected_env = env.
|
|
295
|
+
injected_env = env.flat_map { |key, value| value.nil? ? ["-u", key.to_s] : "#{key}=#{value}" }
|
|
296
296
|
mise_argv = ["mise", "exec", "-C", member.root, "--"]
|
|
297
297
|
return [*mise_argv, *argv] if injected_env.empty?
|
|
298
298
|
|
|
@@ -6,7 +6,7 @@ module Kettle
|
|
|
6
6
|
module Family
|
|
7
7
|
class GitStatus
|
|
8
8
|
def self.dirty?(root)
|
|
9
|
-
stdout, _stderr, status = Open3.capture3("git", "status", "--short", chdir
|
|
9
|
+
stdout, _stderr, status = Open3.capture3("git", "status", "--short", :chdir => root)
|
|
10
10
|
status.success? && !stdout.empty?
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -6,13 +6,14 @@ module Kettle
|
|
|
6
6
|
REQUIRED_FILES = %w[Gemfile Rakefile README.md CHANGELOG.md LICENSE.md].freeze
|
|
7
7
|
REQUIRED_BINS = %w[bin/rake bin/rspec].freeze
|
|
8
8
|
|
|
9
|
-
def self.call(member:, config: nil)
|
|
10
|
-
new(member: member, config: config).call
|
|
9
|
+
def self.call(member:, config: nil, allowed_local_path_roots: [])
|
|
10
|
+
new(member: member, config: config, allowed_local_path_roots: allowed_local_path_roots).call
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def initialize(member:, config: nil)
|
|
13
|
+
def initialize(member:, config: nil, allowed_local_path_roots: [])
|
|
14
14
|
@member = member
|
|
15
15
|
@config = config
|
|
16
|
+
@allowed_local_path_roots = allowed_local_path_roots.filter_map { |path| normalized_path(path) }
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
def call
|
|
@@ -29,7 +30,7 @@ module Kettle
|
|
|
29
30
|
|
|
30
31
|
private
|
|
31
32
|
|
|
32
|
-
attr_reader :member, :config
|
|
33
|
+
attr_reader :member, :config, :allowed_local_path_roots
|
|
33
34
|
|
|
34
35
|
def missing_required_files
|
|
35
36
|
required_files.filter_map do |path|
|
|
@@ -100,11 +101,30 @@ module Kettle
|
|
|
100
101
|
|
|
101
102
|
File.readlines(lockfile).filter_map.with_index(1) do |line, index|
|
|
102
103
|
next unless line.start_with?(" remote: /", " remote: ./", " remote: ../")
|
|
104
|
+
next if allowed_local_path?(line)
|
|
103
105
|
|
|
104
106
|
"release lockfile has local path remote at Gemfile.lock:#{index}"
|
|
105
107
|
end
|
|
106
108
|
end
|
|
107
109
|
|
|
110
|
+
def allowed_local_path?(line)
|
|
111
|
+
remote = line.split("remote:", 2).last.to_s.strip
|
|
112
|
+
remote_path = normalized_path(remote, base: member.root)
|
|
113
|
+
return false unless remote_path
|
|
114
|
+
|
|
115
|
+
allowed_local_path_roots.any? { |root| remote_path == root || remote_path.start_with?("#{root}/") }
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def normalized_path(path, base: nil)
|
|
119
|
+
text = path.to_s
|
|
120
|
+
return nil if text.empty? || text.casecmp("false").zero?
|
|
121
|
+
|
|
122
|
+
expanded = File.expand_path(text, base)
|
|
123
|
+
File.realpath(expanded)
|
|
124
|
+
rescue Errno::ENOENT
|
|
125
|
+
expanded
|
|
126
|
+
end
|
|
127
|
+
|
|
108
128
|
def required_files
|
|
109
129
|
config ? config.check_required_files : REQUIRED_FILES
|
|
110
130
|
end
|
|
@@ -27,12 +27,17 @@ module Kettle
|
|
|
27
27
|
"KETTLE_JEM_DEBUG" => "false",
|
|
28
28
|
"KETTLE_DEV_DEBUG" => "false",
|
|
29
29
|
"SMORG_RB_DEBUG" => "false",
|
|
30
|
-
"DEBUG" =>
|
|
30
|
+
"DEBUG" => nil,
|
|
31
31
|
"BUNDLE_QUIET" => "true",
|
|
32
32
|
"BUNDLE_DEBUG" => "false",
|
|
33
33
|
"BUNDLER_DEBUG" => "false",
|
|
34
34
|
"BUNDLE_VERBOSE" => "false",
|
|
35
|
-
"DEBUG_RESOLVER" =>
|
|
35
|
+
"DEBUG_RESOLVER" => nil,
|
|
36
|
+
"DEBUG_RESOLVER_TREE" => nil,
|
|
37
|
+
"BUNDLER_DEBUG_RESOLVER" => nil,
|
|
38
|
+
"BUNDLER_DEBUG_RESOLVER_TREE" => nil,
|
|
39
|
+
"DEBUG_COMPACT_INDEX" => nil,
|
|
40
|
+
"MOLINILLO_DEBUG" => nil,
|
|
36
41
|
"BUNDLE_SILENCE_DEPRECATIONS" => "true",
|
|
37
42
|
"BUNDLE_SILENCE_ROOT_WARNING" => "true",
|
|
38
43
|
"BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES" => "true"
|
|
@@ -405,7 +410,7 @@ module Kettle
|
|
|
405
410
|
end
|
|
406
411
|
|
|
407
412
|
def append_release_internal_checks(member:, memo:)
|
|
408
|
-
memo << ReadinessCheck.call(member: member, config: config)
|
|
413
|
+
memo << ReadinessCheck.call(member: member, config: config, allowed_local_path_roots: release_allowed_local_path_roots)
|
|
409
414
|
memo << ChangelogCheck.call(member: member, config: config) if memo.last.ok?
|
|
410
415
|
end
|
|
411
416
|
|
|
@@ -679,6 +684,15 @@ module Kettle
|
|
|
679
684
|
.merge(env_overrides)
|
|
680
685
|
end
|
|
681
686
|
|
|
687
|
+
def release_allowed_local_path_roots
|
|
688
|
+
env_overrides.filter_map do |key, value|
|
|
689
|
+
next unless key.end_with?("_LOCAL", "_DEV")
|
|
690
|
+
next if value.to_s.empty? || value.to_s.casecmp("false").zero?
|
|
691
|
+
|
|
692
|
+
value
|
|
693
|
+
end
|
|
694
|
+
end
|
|
695
|
+
|
|
682
696
|
def commit_normalized_lockfiles(branch_members:, runner:, memo:, reason: command)
|
|
683
697
|
return unless commit
|
|
684
698
|
return unless commit_normalized_lockfiles?(reason)
|
data.tar.gz.sig
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
�c�A2�����c���[�6�4����w��E=\,^��˴GȮō��7u��W9�z�X_�iݭ<��ra��c_�&)�^O+���D���w&�B�T`Jr1K���a�MJ�Hbr����2�-�T�a�v_,�����G|����Ϝ��G�dT����t4?w�rYS�B�"Q�Ѝ���CH���M��r���R�^��Sƹ�ii��f
|
|
1
|
+
�t�������z�m�^�mlx�N]dT�,n�;��(�C}��au����q�74�����ϩ%���Swh�.�c���R�6t��ְ�)�8�Xc(��L.�qX��F�?t�a�(I����� k���O-H�
|
|
2
|
+
�ȉ�xt���G��Њ:�}Jg��lZ#�e�!��F������9����?>�Cāe{~��e�sT.xzF��=�<p�:�[� M�y*1�Kd/��XH=J���F�����&R��oӅ"�}�؎��0}��^˄�GD���dU%:?�����J&E�Dn]x.HS�b�-��ޅ��L�@4L�EÖt��ȍ�}��{|)��m3��^�G�s=����0����e��vC��d�0�i�y��
|
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.1.
|
|
4
|
+
version: 0.1.24
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -310,10 +310,10 @@ licenses:
|
|
|
310
310
|
- AGPL-3.0-only
|
|
311
311
|
metadata:
|
|
312
312
|
homepage_uri: https://kettle-family.galtzo.com
|
|
313
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.1.
|
|
314
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.1.
|
|
313
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.1.24
|
|
314
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.1.24/CHANGELOG.md
|
|
315
315
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
316
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.1.
|
|
316
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.1.24
|
|
317
317
|
funding_uri: https://github.com/sponsors/pboling
|
|
318
318
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
319
319
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
metadata.gz.sig
CHANGED
|
Binary file
|