dependabot-docker 0.395.0 → 0.396.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 631a60bfcb79a600a89602befd184d8af5f3aff6e93ddcd636b0ba3a57092b67
4
- data.tar.gz: 9c19a951e4fc1eeaa5448706eda907a35c15fd3ff3d8226a0b67531f437f8a08
3
+ metadata.gz: d4dfb9902bcedec29154319ac165b61f4919234b9e14a5bb52b43c942f51a1e5
4
+ data.tar.gz: 6c7e1b398f047fdf203ca9a21d8802eb999e573273e72c76576f8f028e89544a
5
5
  SHA512:
6
- metadata.gz: 4f129aaf0c6612c022f276e4b84233c7d7f0276a2b393d603fdffa69a209c4f292eea55c7d7981ab365ee209d6f477a36f95c16cdcbbdf0d1515149e3f848320
7
- data.tar.gz: 82d0113a5eb41bee3c43a0840c55a3b7738c2c1b45d24edc39a1bee41cd2af8a5d6d282a39154555a5862e42f21314583ec58fec6e52ceaf7265c149b43faf31
6
+ metadata.gz: af5fe84bcc77eab88b77e70e2f659159698f1bcec99cb6d114dccc3a5a3f325859a8b1bb8d9573eb20c46c3994d731805ef8f88083408ac882bb30fa2935f5db
7
+ data.tar.gz: 9f3ab430f720059323379a4900c9d27a782ee4c6d9ba1381a4eb801dc4c417a5858a820d427a955686e4d10d391f4f2e6901e4b1db9dbdf40ac36a06a515d026
@@ -4,7 +4,6 @@
4
4
  require "sorbet-runtime"
5
5
  require "dependabot/file_fetchers"
6
6
  require "dependabot/file_fetchers/base"
7
- require "dependabot/notices"
8
7
  require "dependabot/shared/shared_file_updater"
9
8
 
10
9
  module Dependabot
@@ -29,21 +28,6 @@ module Dependabot
29
28
  def container_image_regex
30
29
  %r{^#{FROM_REGEX}\s+(docker\.io/)?}o
31
30
  end
32
-
33
- sig { override.returns(T::Array[Dependabot::Notice]) }
34
- def notices
35
- return [] unless dependencies.any? { |dependency| dependency.metadata[:docker_cooldown_date_unavailable] }
36
-
37
- [Dependabot::Notice.new(
38
- mode: Dependabot::Notice::NoticeMode::WARN,
39
- type: "docker_cooldown_date_unavailable",
40
- package_manager_name: "docker",
41
- title: "Docker cooldown was not applied",
42
- description: "Cooldown could not be applied because no publication date was available from the registry.",
43
- show_in_pr: true,
44
- show_alert: false
45
- )]
46
- end
47
31
  end
48
32
  end
49
33
  end
@@ -444,7 +444,10 @@ module Dependabot
444
444
  # If we can't determine publication details, skip cooldown for this tag and use it
445
445
  # rather than blocking the update when the registry doesn't support the required API calls
446
446
  if !details || !details.released_at
447
- mark_cooldown_date_unavailable if cooldown_days_for(tag).positive?
447
+ Dependabot::UpdateCheckers::CooldownCalculation.mark_cooldown_date_unavailable(
448
+ dependency,
449
+ cooldown_days: cooldown_days_for(tag)
450
+ )
448
451
  return [tag]
449
452
  end
450
453
 
@@ -1068,11 +1071,6 @@ module Dependabot
1068
1071
  )
1069
1072
  end
1070
1073
 
1071
- sig { void }
1072
- def mark_cooldown_date_unavailable
1073
- dependency.metadata[:docker_cooldown_date_unavailable] = true
1074
- end
1075
-
1076
1074
  # Builds the PackageRelease version for a tag. Non-comparable tags (e.g.
1077
1075
  # "alpine") have no semver, so Docker::Version.new would raise. The version
1078
1076
  # is only consumed by semver-aware version-tag cooldown; the digest cooldown
@@ -1101,7 +1099,10 @@ module Dependabot
1101
1099
 
1102
1100
  released_at = publication_detail(Tag.new(tag_name))&.released_at
1103
1101
  unless released_at
1104
- mark_cooldown_date_unavailable if cooldown.default_days.positive?
1102
+ Dependabot::UpdateCheckers::CooldownCalculation.mark_cooldown_date_unavailable(
1103
+ dependency,
1104
+ cooldown_days: cooldown.default_days
1105
+ )
1105
1106
  return false
1106
1107
  end
1107
1108
 
@@ -154,11 +154,12 @@ module Dependabot
154
154
  return if old_tags.empty?
155
155
 
156
156
  modified_content = content
157
+ replacement = new_helm_tag(file)
157
158
 
158
159
  old_tags.each do |old_tag|
159
- old_tag_regex = /^\s*(?:-\s)?(?:tag|version):\s+["']?#{old_tag}["']?(?=\s|$)/
160
+ old_tag_regex = /^\s*(?:-\s)?(?:tag|version):\s+["']?#{Regexp.escape(old_tag)}["']?(?=\s|$)/
160
161
  modified_content = modified_content&.gsub(old_tag_regex) do |old_img_tag|
161
- old_img_tag.gsub(old_tag.to_s, new_helm_tag(file).to_s)
162
+ old_img_tag.gsub(old_tag.to_s, replacement.to_s)
162
163
  end
163
164
  end
164
165
  modified_content
@@ -170,11 +171,12 @@ module Dependabot
170
171
  return if old_images.empty?
171
172
 
172
173
  modified_content = content
174
+ replacement = new_yaml_image(file)
173
175
 
174
176
  old_images.each do |old_image|
175
- old_image_regex = /^\s*(?:-\s)?image:\s+#{old_image}(?=\s|$)/
177
+ old_image_regex = %r{^\s*(?:-\s)?image:\s+(?:docker\.io/)?#{Regexp.escape(old_image)}(?=\s|$)}
176
178
  modified_content = modified_content&.gsub(old_image_regex) do |old_img|
177
- old_img.gsub(old_image.to_s, new_yaml_image(file).to_s)
179
+ old_img.gsub(old_image.to_s, replacement.to_s)
178
180
  end
179
181
  end
180
182
  modified_content
@@ -182,7 +184,7 @@ module Dependabot
182
184
 
183
185
  sig { params(file: Dependabot::DependencyFile).returns(String) }
184
186
  def new_yaml_image(file)
185
- element = T.must(dependency).requirements.find { |r| r.file == file.name }
187
+ element = requirement_for_file(file)
186
188
  source = image_source(element)
187
189
  prefix = source[:registry] ? "#{source[:registry]}/" : ""
188
190
  digest = source[:digest] ? "@sha256:#{source[:digest]}" : ""
@@ -198,7 +200,7 @@ module Dependabot
198
200
  digest = source[:digest] ? "@sha256:#{source[:digest]}" : ""
199
201
  tag = source[:tag] ? ":#{source[:tag]}" : ""
200
202
  "#{prefix}#{T.must(dependency).name}#{tag}#{digest}"
201
- end
203
+ end.uniq
202
204
  end
203
205
 
204
206
  sig { params(file: Dependabot::DependencyFile).returns(T::Array[String]) }
@@ -208,18 +210,23 @@ module Dependabot
208
210
  tag = source[:tag] || ""
209
211
  digest = source[:digest] ? "@sha256:#{source[:digest]}" : ""
210
212
  "#{tag}#{digest}"
211
- end
213
+ end.uniq
212
214
  end
213
215
 
214
216
  sig { params(file: Dependabot::DependencyFile).returns(String) }
215
217
  def new_helm_tag(file)
216
- element = T.must(dependency).requirements.find { |r| r.file == file.name }
218
+ element = requirement_for_file(file)
217
219
  source = image_source(element)
218
220
  tag = source[:tag] || ""
219
221
  digest = source[:digest] ? "@sha256:#{source[:digest]}" : ""
220
222
  "#{tag}#{digest}"
221
223
  end
222
224
 
225
+ sig { params(file: Dependabot::DependencyFile).returns(T.nilable(Dependabot::DependencyRequirement)) }
226
+ def requirement_for_file(file)
227
+ requirements(file).first
228
+ end
229
+
223
230
  protected
224
231
 
225
232
  sig { params(file: Dependabot::DependencyFile, dependency: Dependabot::Dependency).returns(T::Boolean) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-docker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.395.0
4
+ version: 0.396.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.395.0
18
+ version: 0.396.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.395.0
25
+ version: 0.396.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -266,7 +266,7 @@ licenses:
266
266
  - MIT
267
267
  metadata:
268
268
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
269
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.395.0
269
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.396.0
270
270
  rdoc_options: []
271
271
  require_paths:
272
272
  - lib