kettle-dev 2.5.19 → 2.5.20

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: a8ffb38694a14518e416b497413025d417137ce7b7cf8673dd31f68aa46c8539
4
- data.tar.gz: 71d1ff523dc11ba20f72994792ad3edd4ff43a0ceea2c8c84e46e65b77e72977
3
+ metadata.gz: 7f642698f24dc241a8f3286ff20b151dcdb30333c436290681740ffe24fb6148
4
+ data.tar.gz: 578361645c3b639cca69d6c120a7990b38afcbb55bc6c5c55df95e4ba998e292
5
5
  SHA512:
6
- metadata.gz: a7cf27e978644578be5e2839670c4981343b9d84646d59ece70e4d83eb388404dcd52b77c3f90929164ff86f698bc6bfc93ecfa42f8bfc9a2ec342d764030aa3
7
- data.tar.gz: 59de547a4f7a50905bed8bc66c8b919eca375ff9d4d31bd079371dfee717d540bf800477bae8dad644a2efe7935d7cb44b53e059cb4554a99c54d5655d372dc2
6
+ metadata.gz: bfd379df162aa902b96ba7f5fefc28170aee8f1995230d24268baccd8603dfa4a596cf4f29acf2a0230c8d1e755ec8a91ddc193cd4139a18e9bfc69143bd59e7
7
+ data.tar.gz: 62bd06604b31ea2d042e87ebb67ab9815d251c29e4606ea61cdcd5aad983868229e932dfad3bce5ea304e5a54523816723d1da3ce8a618f6e7eca88714f0aea0
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
+ ## [2.5.20] - 2026-08-07
34
+
35
+ - TAG: [v2.5.20][2.5.20t]
36
+ - COVERAGE: 91.75% -- 5440/5929 lines in 47 files
37
+ - BRANCH COVERAGE: 76.14% -- 2049/2691 branches in 47 files
38
+ - 50.77% documented
39
+
40
+ ### Fixed
41
+
42
+ - Prefer non-cancelled exact-commit GitHub Actions runs when workflow concurrency creates duplicate runs.
43
+
44
+ - Skip YARD lint when a project has no .yard-lint.yml policy.
45
+
33
46
  ## [2.5.19] - 2026-08-06
34
47
 
35
48
  - TAG: [v2.5.19][2.5.19t]
@@ -3259,7 +3272,9 @@ Please file a bug if you notice a violation of semantic versioning.
3259
3272
  - Selecting will run the selected workflow via `act`
3260
3273
  - This may move to its own gem in the future.
3261
3274
 
3262
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.19...HEAD
3275
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.20...HEAD
3276
+ [2.5.20]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.19...v2.5.20
3277
+ [2.5.20t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.5.20
3263
3278
  [2.5.19]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.18...v2.5.19
3264
3279
  [2.5.19t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.5.19
3265
3280
  [2.5.18]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.17...v2.5.18
data/README.md CHANGED
@@ -1007,7 +1007,7 @@ Thanks for RTFM. ☺️
1007
1007
  [📌gitmoji]: https://gitmoji.dev
1008
1008
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1009
1009
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1010
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.946-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1010
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.929-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1011
1011
  [🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
1012
1012
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1013
1013
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -104,9 +104,10 @@ module Kettle
104
104
  return unless data
105
105
 
106
106
  runs = Array(data["workflow_runs"]) || []
107
- # Try to match by head_sha first; fall back to first run (branch-scoped) if none matches yet.
107
+ # Try to match by head_sha first; GitHub may return a cancelled duplicate
108
+ # before the replacement run created by workflow concurrency.
108
109
  run = if sha
109
- match = runs.find { |r| r["head_sha"] == sha }
110
+ match = preferred_head_run(runs.select { |r| r["head_sha"] == sha })
110
111
  match ||= latest_repository_workflow_run(owner: owner, repo: repo, workflow_file: workflow_file, branch: b, head_sha: sha, token: token)
111
112
  require_head ? match : (match || runs.first)
112
113
  else
@@ -134,9 +135,18 @@ module Kettle
134
135
  return unless data
135
136
 
136
137
  workflow_path = ".github/workflows/#{workflow_file}"
137
- Array(data["workflow_runs"]).find do |run|
138
- run["head_sha"] == head_sha && run["path"] == workflow_path
139
- end
138
+ preferred_head_run(
139
+ Array(data["workflow_runs"]).select do |run|
140
+ run["head_sha"] == head_sha && run["path"] == workflow_path
141
+ end
142
+ )
143
+ end
144
+
145
+ # Concurrency cancellation can leave an older run for the exact same
146
+ # commit ahead of its replacement in GitHub's API response. Prefer the
147
+ # replacement so a cancelled duplicate cannot mask a valid run.
148
+ def preferred_head_run(runs)
149
+ runs.find { |run| run["conclusion"] != "cancelled" } || runs.first
140
150
  end
141
151
 
142
152
  def github_get_json(url, token:)
@@ -219,5 +219,7 @@ begin
219
219
  end
220
220
  end
221
221
  rescue LoadError
222
+ # simplecov:disable -- Appraisal is an optional development dependency.
222
223
  warn("[kettle-dev][appraisal.rake] failed to load appraisal/tasks") if Kettle::Dev::DEBUGGING
224
+ # simplecov:enable
223
225
  end
@@ -27,10 +27,12 @@ else
27
27
  Kettle::Dev.register_default("bundle:audit:update")
28
28
  Kettle::Dev.register_default("bundle:audit")
29
29
  rescue LoadError
30
+ # simplecov:disable -- bundler-audit is an optional development dependency.
30
31
  warn("[kettle-dev][bundle_audit.rake] failed to load bundle/audit/task") if Kettle::Dev::DEBUGGING
31
32
  define_bundle_audit_stub_tasks.call(
32
33
  "(stub)",
33
34
  ->(_task_name) { "NOTE: bundler-audit isn't installed, or is disabled for #{RUBY_VERSION} in the current environment" }
34
35
  )
36
+ # simplecov:enable
35
37
  end
36
38
  end
@@ -31,9 +31,11 @@ begin
31
31
  end
32
32
  Kettle::Dev.register_default("reek:update") unless Kettle::Dev::IS_CI
33
33
  rescue LoadError
34
+ # simplecov:disable -- Reek is an optional development dependency.
34
35
  warn("[kettle-dev][reek.rake] failed to load reek/rake/task") if Kettle::Dev::DEBUGGING
35
36
  desc("(stub) reek is unavailable")
36
37
  task(:reek) do
37
38
  warn("NOTE: reek isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
38
39
  end
40
+ # simplecov:enable
39
41
  end
@@ -3,5 +3,7 @@
3
3
  begin
4
4
  require "require_bench/tasks" if Kettle::Dev::REQUIRE_BENCH
5
5
  rescue LoadError
6
+ # simplecov:disable -- require_bench is an opt-in development dependency.
6
7
  warn("[kettle-dev][require_bench.rake] failed to load require_bench/tasks") if Kettle::Dev::DEBUGGING
8
+ # simplecov:enable
7
9
  end
@@ -7,5 +7,7 @@ begin
7
7
  t.options = ["--debug"]
8
8
  end
9
9
  rescue LoadError
10
+ # simplecov:disable -- RuboCop Gradual is an optional development dependency.
10
11
  warn("[kettle-dev][rubocop_gradual.rake] failed to load rubocop/gradual/rake_task") if Kettle::Dev::DEBUGGING
12
+ # simplecov:enable
11
13
  end
@@ -24,6 +24,7 @@ begin
24
24
  Kettle::Dev.register_default("test") unless Kettle::Dev.default_registered?("coverage")
25
25
  end
26
26
  rescue LoadError
27
+ # simplecov:disable -- Rake's optional test task integration varies by runtime.
27
28
  warn("[kettle-dev][spec_test.rake] failed to load rake/testtask") if Kettle::Dev::DEBUGGING
28
29
  unless Rake::Task.task_defined?(:test)
29
30
  desc("test task stub")
@@ -31,6 +32,7 @@ rescue LoadError
31
32
  warn("NOTE: minitest isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
32
33
  end
33
34
  end
35
+ # simplecov:enable
34
36
  end
35
37
 
36
38
  setup_spec_task = ->(default:) {
@@ -14,20 +14,26 @@ begin
14
14
  begin
15
15
  require "yard/fence"
16
16
  Yard::Fence.install_rake_tasks!(:yard)
17
+ # simplecov:disable -- optional plugin availability is environment-specific.
17
18
  rescue LoadError
18
19
  # yard-fence not available - that's fine
20
+ # simplecov:enable
19
21
  end
20
22
 
21
23
  begin
22
24
  require "yard/timekeeper"
23
25
  Yard::Timekeeper.install_rake_tasks!(:yard)
26
+ # simplecov:disable -- optional plugin availability is environment-specific.
24
27
  rescue LoadError
25
28
  # yard-timekeeper not available - that's fine
29
+ # simplecov:enable
26
30
  end
27
31
 
28
32
  namespace :yard do
29
33
  desc "Lint YARD Documentation"
30
34
  task :lint do
35
+ next unless File.file?(".yard-lint.yml")
36
+
31
37
  # Keep warning-only lint runs compact in default/release flows, but rerun
32
38
  # with full output when lint fails so the blocking diagnostics are visible.
33
39
  sh("bundle", "exec", "yard-lint", "lib") unless system("bundle", "exec", "yard-lint", "--quiet", "lib")
@@ -39,10 +45,12 @@ begin
39
45
  Kettle::Dev.register_default("yard:lint")
40
46
  Kettle::Dev.register_default("yard")
41
47
  rescue LoadError
48
+ # simplecov:disable -- YARD is an optional development dependency.
42
49
  warn("[kettle-dev][yard.rake] failed to load yard") if Kettle::Dev::DEBUGGING
43
50
  desc("(stub) yard is unavailable")
44
51
  task(:yard) do # rubocop:disable Rake/DuplicateTask -- fallback when the real YARD task cannot load
45
52
  warn("NOTE: yard isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
46
53
  end
47
54
  Kettle::Dev.register_default("yard")
55
+ # simplecov:enable
48
56
  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 = "2.5.19"
8
+ VERSION = "2.5.20"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.19
4
+ version: 2.5.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -402,10 +402,10 @@ licenses:
402
402
  - AGPL-3.0-only
403
403
  metadata:
404
404
  homepage_uri: https://kettle-dev.galtzo.com
405
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.5.19
406
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.5.19/CHANGELOG.md
405
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.5.20
406
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.5.20/CHANGELOG.md
407
407
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
408
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.5.19
408
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.5.20
409
409
  funding_uri: https://github.com/sponsors/pboling
410
410
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
411
411
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file