dependabot-helm 0.392.0 → 0.393.0
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
- data/lib/dependabot/helm/file_fetcher.rb +2 -2
- data/lib/dependabot/helm/requirement.rb +6 -3
- data/lib/dependabot/helm/update_checker.rb +64 -14
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 227be55b7636199d6e62c5e85b9b912d638aa975eb05b3e9e0f37b7c2b95c1a8
|
|
4
|
+
data.tar.gz: 691a554513a02c25655ab9e9694ba3708460d6372a02b563778d6bb6ebd2c38a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 597be1cd5fda7853747cbfbc0ccaae9b5dda58d758cc59bd08e218d3c322eb1d7e5cbcc04fbe5138efca921588100d1410ea19c008bd3b5cb8f3dd160dc01633
|
|
7
|
+
data.tar.gz: b547fa89d94cef82b49555f6698b14831a06a8ccd87eacdf5cbdcf20705483021537c10810591f624c264f01851006844d90ffbb71cd0899c0ec2c650751a8d9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "dependabot/shared/shared_file_fetcher"
|
|
@@ -41,7 +41,7 @@ module Dependabot
|
|
|
41
41
|
@chart_locks ||=
|
|
42
42
|
T.let(
|
|
43
43
|
repo_contents(raise_errors: false)
|
|
44
|
-
.select { |f| f.type == "file" && f.name.casecmp(CHART_LOCK_FILENAME).zero? }
|
|
44
|
+
.select { |f| f.type == "file" && T.must(f.name.casecmp(CHART_LOCK_FILENAME)).zero? }
|
|
45
45
|
.map { |f| fetch_file_from_host(f.name) },
|
|
46
46
|
T.nilable(T::Array[DependencyFile])
|
|
47
47
|
)
|
|
@@ -16,9 +16,12 @@ module Dependabot
|
|
|
16
16
|
# docker-image path.
|
|
17
17
|
#
|
|
18
18
|
# NOTE: this class is intentionally NOT registered as the requirement class
|
|
19
|
-
# for "helm" (that remains Docker::Requirement, used by the docker-image
|
|
20
|
-
#
|
|
21
|
-
# requirements updater
|
|
19
|
+
# for "helm" (that remains Docker::Requirement, used by the docker-image path
|
|
20
|
+
# and by Base, which compares against requirement_class.new(">= 0")). It is
|
|
21
|
+
# used explicitly by the range-preserving requirements updater, and by
|
|
22
|
+
# UpdateChecker#helm_ignore_requirements when filtering candidates, since
|
|
23
|
+
# Docker::Requirement#satisfied_by? is typed for Docker::Version and raises
|
|
24
|
+
# on a Helm::Version.
|
|
22
25
|
class Requirement < Dependabot::Requirement
|
|
23
26
|
extend T::Sig
|
|
24
27
|
|
|
@@ -235,16 +235,57 @@ module Dependabot
|
|
|
235
235
|
|
|
236
236
|
sig { params(releases: T::Array[T::Hash[String, Object]]).returns(T::Array[T::Hash[String, Object]]) }
|
|
237
237
|
def filter_valid_releases(releases)
|
|
238
|
-
|
|
238
|
+
# Compare against current_version (the anchored floor) rather than
|
|
239
|
+
# dependency.version: for a range constraint (">=1.0.0 <2.0.0") the raw
|
|
240
|
+
# version string isn't a single parseable version.
|
|
241
|
+
newer = releases.reject do |release|
|
|
242
|
+
version_class.new(T.cast(release["version"], String)) <= current_version
|
|
243
|
+
end
|
|
244
|
+
filtered = newer.reject do |release|
|
|
239
245
|
release_version = version_class.new(T.cast(release["version"], String))
|
|
240
|
-
|
|
241
|
-
# dependency.version: for a range constraint (">=1.0.0 <2.0.0") the raw
|
|
242
|
-
# version string isn't a single parseable version.
|
|
243
|
-
release_version <= current_version ||
|
|
244
|
-
ignore_requirements.any? do |r|
|
|
245
|
-
r.instance_of?(Dependabot::Requirement) && r.satisfied_by?(release_version)
|
|
246
|
-
end
|
|
246
|
+
helm_ignore_requirements.any? { |r| r.satisfied_by?(release_version) }
|
|
247
247
|
end
|
|
248
|
+
|
|
249
|
+
record_ignore_outcome(newer: newer.any?, surviving: filtered.any?)
|
|
250
|
+
filtered
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
# Ignore conditions have to be parsed by Helm::Requirement here, not by the
|
|
254
|
+
# requirement class registered for helm: that is Docker::Requirement, whose
|
|
255
|
+
# #satisfied_by? is typed for Docker::Version and raises on the
|
|
256
|
+
# Helm::Version candidates below.
|
|
257
|
+
#
|
|
258
|
+
# This deliberately does not override the public #ignore_requirements.
|
|
259
|
+
# Base#can_update? compares that list against
|
|
260
|
+
# requirement_class.new(">= 0"), and a Helm::Requirement there puts a
|
|
261
|
+
# Helm::Version up against a plain Gem::Version, which Helm::Version#<=>'s
|
|
262
|
+
# sig rejects. So the registered class keeps serving Base, and only the
|
|
263
|
+
# filtering below uses the Helm parser.
|
|
264
|
+
sig { returns(T::Array[Dependabot::Requirement]) }
|
|
265
|
+
def helm_ignore_requirements
|
|
266
|
+
@helm_ignore_requirements ||= T.let(
|
|
267
|
+
ignored_versions.flat_map { |req| Helm::Requirement.requirements_array(req) },
|
|
268
|
+
T.nilable(T::Array[Dependabot::Requirement])
|
|
269
|
+
)
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
# The updater needs AllVersionsIgnored to tell "everything newer was
|
|
273
|
+
# ignored" from "nothing newer exists", but the decision cannot be made
|
|
274
|
+
# in the filters: a source that filters everything out returns nil so the
|
|
275
|
+
# next source gets a turn, and its list may well contain a version this
|
|
276
|
+
# one never saw. So each source only records what it saw, and
|
|
277
|
+
# fetch_latest_chart_version raises once the sources are exhausted.
|
|
278
|
+
sig { params(newer: T::Boolean, surviving: T::Boolean).void }
|
|
279
|
+
def record_ignore_outcome(newer:, surviving:)
|
|
280
|
+
@all_newer_ignored = T.let(
|
|
281
|
+
(@all_newer_ignored || false) || (newer && !surviving),
|
|
282
|
+
T.nilable(T::Boolean)
|
|
283
|
+
)
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
sig { returns(T::Boolean) }
|
|
287
|
+
def all_newer_ignored?
|
|
288
|
+
@all_newer_ignored == true
|
|
248
289
|
end
|
|
249
290
|
|
|
250
291
|
sig { params(repo_url: String).returns(String) }
|
|
@@ -360,7 +401,15 @@ module Dependabot
|
|
|
360
401
|
tag = fetch_latest_oci_tag(chart_name, repo_url) if repo_url&.start_with?("oci://")
|
|
361
402
|
return tag if tag
|
|
362
403
|
|
|
363
|
-
fetch_releases_from_index(chart_name, repo_url)
|
|
404
|
+
from_index = fetch_releases_from_index(chart_name, repo_url)
|
|
405
|
+
return from_index if from_index
|
|
406
|
+
|
|
407
|
+
# Every source came up empty. If at least one of them had newer versions
|
|
408
|
+
# that an ignore rule removed, that is a different answer than "there is
|
|
409
|
+
# nothing newer", and the updater handles the two differently.
|
|
410
|
+
raise Dependabot::AllVersionsIgnored if raise_on_ignored && all_newer_ignored?
|
|
411
|
+
|
|
412
|
+
nil
|
|
364
413
|
end
|
|
365
414
|
|
|
366
415
|
sig { params(chart_name: String, repo_url: String).returns(T.nilable(Gem::Version)) }
|
|
@@ -443,12 +492,13 @@ module Dependabot
|
|
|
443
492
|
|
|
444
493
|
sig { params(all_versions: T::Array[String]).returns(T::Array[String]) }
|
|
445
494
|
def filter_valid_versions(all_versions)
|
|
446
|
-
all_versions.reject
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
r.instance_of?(Dependabot::Requirement) && r.satisfied_by?(version_class.new(version))
|
|
450
|
-
end
|
|
495
|
+
newer = all_versions.reject { |version| version_class.new(version) <= current_version }
|
|
496
|
+
filtered = newer.reject do |version|
|
|
497
|
+
helm_ignore_requirements.any? { |r| r.satisfied_by?(version_class.new(version)) }
|
|
451
498
|
end
|
|
499
|
+
|
|
500
|
+
record_ignore_outcome(newer: newer.any?, surviving: filtered.any?)
|
|
501
|
+
filtered
|
|
452
502
|
end
|
|
453
503
|
|
|
454
504
|
sig { returns(T.nilable(Gem::Version)) }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-helm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.393.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dependabot
|
|
@@ -15,28 +15,28 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - '='
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 0.
|
|
18
|
+
version: 0.393.0
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - '='
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 0.
|
|
25
|
+
version: 0.393.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: dependabot-docker
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
30
|
- - '='
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 0.
|
|
32
|
+
version: 0.393.0
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - '='
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 0.
|
|
39
|
+
version: 0.393.0
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: debug
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -275,7 +275,7 @@ licenses:
|
|
|
275
275
|
- MIT
|
|
276
276
|
metadata:
|
|
277
277
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
278
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
278
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.393.0
|
|
279
279
|
rdoc_options: []
|
|
280
280
|
require_paths:
|
|
281
281
|
- lib
|