dependabot-helm 0.394.0 → 0.395.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: cf9e2bbc8681daa0e6c7570ceabcf694fb7ca7e3a9ee4e1b7718b563d009e665
4
- data.tar.gz: 691a554513a02c25655ab9e9694ba3708460d6372a02b563778d6bb6ebd2c38a
3
+ metadata.gz: 66957e7dcbc920c485cc615845dfcebe5c7f05b6e1f21e22e89a8a0ba7501709
4
+ data.tar.gz: 5abe7647baa0d3e87d680dc1450c8766de9d9a78b9c68777a5e56591bd672371
5
5
  SHA512:
6
- metadata.gz: b814f45944384a70ff7488b60882ecb8a913f579b25fa07f0fdd2b3d03af2f0302fbc25a1f2aae197f6de4f8ec14f0cc4480795b248181d3da9a48340aeb9a9e
7
- data.tar.gz: b547fa89d94cef82b49555f6698b14831a06a8ccd87eacdf5cbdcf20705483021537c10810591f624c264f01851006844d90ffbb71cd0899c0ec2c650751a8d9
6
+ metadata.gz: 2540ab6c3f7ea1f48a9679a42eb6fe3be10525c32b337c21334f4ddba80a71cc8ae657526560dc20eb06ba2dc9d67e35e8d8023fcdcf864ffdb7b397de32f00b
7
+ data.tar.gz: c58f75ddbd53ac731d258ebb5e6863bc1a314c2a6bfdb0bdb709256439a56b9c88b62001996d0cc5374b7c8fb6f612c50dc4d36d254ad3172856bac36b9d7420
@@ -40,7 +40,8 @@ module Dependabot
40
40
 
41
41
  sig { params(yaml_stream: Psych::Nodes::Stream, content: String).returns(String) }
42
42
  def update_image_tags_recursive(yaml_stream, content)
43
- updated_content = content.dup.split("\n")
43
+ # -1 keeps a trailing empty element so join restores a final newline
44
+ updated_content = content.dup.split("\n", -1)
44
45
 
45
46
  yaml_stream.children.each do |document|
46
47
  document.children.each do |root_node|
@@ -90,8 +91,19 @@ module Dependabot
90
91
 
91
92
  sig { params(key: String, value_node: Psych::Nodes::Node, content: T::Array[String]).returns(T::Array[String]) }
92
93
  def process_image_key(key, value_node, content)
93
- return content unless key == "image" && value_node.is_a?(Psych::Nodes::Mapping)
94
+ return content unless key == "image"
95
+
96
+ if value_node.is_a?(Psych::Nodes::Mapping)
97
+ process_mapping_image(value_node, content)
98
+ elsif value_node.is_a?(Psych::Nodes::Scalar)
99
+ process_scalar_image(value_node, content)
100
+ else
101
+ content
102
+ end
103
+ end
94
104
 
105
+ sig { params(value_node: Psych::Nodes::Mapping, content: T::Array[String]).returns(T::Array[String]) }
106
+ def process_mapping_image(value_node, content)
95
107
  dependency_name = dependency.name
96
108
  has_dependency = contains_dependency?(value_node, dependency_name)
97
109
  return content unless has_dependency
@@ -100,6 +112,12 @@ module Dependabot
100
112
  update_version_tags(value_node, content, dependency_version)
101
113
  end
102
114
 
115
+ sig { params(value_node: Psych::Nodes::Scalar, content: T::Array[String]).returns(T::Array[String]) }
116
+ def process_scalar_image(value_node, content)
117
+ dependency_version = T.must(dependency.version)
118
+ update_scalar_image_tag(value_node, content, dependency_version)
119
+ end
120
+
103
121
  sig { params(node: Psych::Nodes::Node, dependency_name: String).returns(T::Boolean) }
104
122
  def contains_dependency?(node, dependency_name)
105
123
  node.children.any? do |child|
@@ -133,6 +151,73 @@ module Dependabot
133
151
 
134
152
  content
135
153
  end
154
+
155
+ sig do
156
+ params(
157
+ value_node: Psych::Nodes::Scalar,
158
+ content: T::Array[String],
159
+ dependency_version: String
160
+ ).returns(T::Array[String])
161
+ end
162
+ def update_scalar_image_tag(value_node, content, dependency_version)
163
+ dependency_name = dependency.name
164
+
165
+ dependency.requirements.each do |req|
166
+ next unless req.metadata_symbol("type") == :docker_image
167
+
168
+ old_tag = req.source_string("tag")
169
+ next unless old_tag
170
+ # digest-pinned images resolve by digest, so a tag-only bump would silently keep the old image
171
+ next if req.source_string("digest")
172
+
173
+ old_declaration = scalar_image_declaration(dependency_name, req, old_tag)
174
+ next unless value_node.value.chomp == old_declaration
175
+
176
+ new_declaration = scalar_image_declaration(dependency_name, req, dependency_version)
177
+ replace_within_node_span(value_node, content, old_declaration, new_declaration)
178
+ end
179
+
180
+ content
181
+ end
182
+
183
+ sig do
184
+ params(
185
+ value_node: Psych::Nodes::Scalar,
186
+ content: T::Array[String],
187
+ old_declaration: String,
188
+ new_declaration: String
189
+ ).void
190
+ end
191
+ def replace_within_node_span(value_node, content, old_declaration, new_declaration)
192
+ start_line = value_node.start_line
193
+ end_line = value_node.end_line
194
+
195
+ if start_line == end_line
196
+ line = T.must(content[start_line])
197
+ prefix = line[0...value_node.start_column]
198
+ rest = T.must(line[value_node.start_column..])
199
+ content[start_line] = "#{prefix}#{rest.sub(old_declaration, new_declaration)}"
200
+ else
201
+ # block/folded scalar: the declaration text lives on a line after start_line, so
202
+ # search the node's whole line span rather than just the line Psych anchors it to
203
+ segment = T.must(content[start_line..end_line]).join("\n")
204
+ content[start_line..end_line] = segment.sub(old_declaration, new_declaration).split("\n", -1)
205
+ end
206
+ end
207
+
208
+ sig do
209
+ params(
210
+ name: String,
211
+ req: Dependabot::DependencyRequirement,
212
+ tag: String
213
+ ).returns(String)
214
+ end
215
+ def scalar_image_declaration(name, req, tag)
216
+ registry = req.source_string("registry")
217
+ # the parser already folds a detected registry into the name itself (e.g. "docker.io/nginx")
218
+ declaration = registry && !name.start_with?("#{registry}/") ? "#{registry}/#{name}" : name
219
+ "#{declaration}:#{tag}"
220
+ end
136
221
  end
137
222
  end
138
223
  end
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.394.0
4
+ version: 0.395.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.394.0
18
+ version: 0.395.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.394.0
25
+ version: 0.395.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.394.0
32
+ version: 0.395.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.394.0
39
+ version: 0.395.0
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: debug
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -192,19 +192,19 @@ dependencies:
192
192
  - !ruby/object:Gem::Version
193
193
  version: '1.1'
194
194
  - !ruby/object:Gem::Dependency
195
- name: turbo_tests
195
+ name: turbo_tests2
196
196
  requirement: !ruby/object:Gem::Requirement
197
197
  requirements:
198
198
  - - "~>"
199
199
  - !ruby/object:Gem::Version
200
- version: 2.2.5
200
+ version: 3.2.7
201
201
  type: :development
202
202
  prerelease: false
203
203
  version_requirements: !ruby/object:Gem::Requirement
204
204
  requirements:
205
205
  - - "~>"
206
206
  - !ruby/object:Gem::Version
207
- version: 2.2.5
207
+ version: 3.2.7
208
208
  - !ruby/object:Gem::Dependency
209
209
  name: vcr
210
210
  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.394.0
278
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.395.0
279
279
  rdoc_options: []
280
280
  require_paths:
281
281
  - lib