dependabot-hex 0.391.0 → 0.392.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/hex/file_updater/lockfile_updater.rb +2 -2
- data/lib/dependabot/hex/file_updater/mixfile_requirement_updater.rb +1 -1
- data/lib/dependabot/hex/file_updater/mixfile_updater.rb +11 -11
- data/lib/dependabot/hex/metadata_finder.rb +1 -4
- data/lib/dependabot/hex/update_checker/file_preparer.rb +16 -15
- data/lib/dependabot/hex/update_checker/latest_version_finder.rb +2 -2
- data/lib/dependabot/hex/update_checker/requirements_updater.rb +13 -11
- data/lib/dependabot/hex/update_checker.rb +27 -3
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9587a3a768819d1a9f8f93c794a8fb6f207c7e11505a01ceed45c3ef1b625e2d
|
|
4
|
+
data.tar.gz: c86ce17c07e9d0ee74fb8acbcb8eb135a46eb066935cdee9cb1d90eb8a97671e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4ec2563a4358e608e09046e5ca9c4cc334011211232bab4ec21b2bc00ade4ec0c634e9c8d387c14e20a46f1c85b4b67f58853d045af8a2e707b34afdc61f12b0
|
|
7
|
+
data.tar.gz: 7a3a452c29f6fc050ba510c5ded29a0b37e0a4e988bccf9d291d7b5d877ee1f420f97e141d4dbd1e35a52ed4813ef7e54bafe97ac219db2643a9b294c0a0804a
|
|
@@ -139,7 +139,7 @@ module Dependabot
|
|
|
139
139
|
.reduce(mixfile_content.dup) do |content, dep|
|
|
140
140
|
# Run on the updated mixfile content, so we're updating from the
|
|
141
141
|
# updated requirements
|
|
142
|
-
req_details = dep.requirements.find { |r| r
|
|
142
|
+
req_details = dep.requirements.find { |r| r.file == filename }
|
|
143
143
|
|
|
144
144
|
next content unless req_details
|
|
145
145
|
next content unless Hex::Version.correct?(dep.version)
|
|
@@ -147,7 +147,7 @@ module Dependabot
|
|
|
147
147
|
MixfileRequirementUpdater.new(
|
|
148
148
|
dependency_name: dep.name,
|
|
149
149
|
mixfile_content: content,
|
|
150
|
-
previous_requirement: req_details.
|
|
150
|
+
previous_requirement: req_details.requirement_string,
|
|
151
151
|
updated_requirement: dep.version,
|
|
152
152
|
insert_if_bare: true
|
|
153
153
|
).updated_content
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "sorbet-runtime"
|
|
@@ -56,19 +56,19 @@ module Dependabot
|
|
|
56
56
|
changed_requirements =
|
|
57
57
|
dependency.requirements - (dependency.previous_requirements || [])
|
|
58
58
|
|
|
59
|
-
changed_requirements.any? { |
|
|
59
|
+
changed_requirements.any? { |requirement| requirement.file == file.name }
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
sig { params(content: String, filename: String, dependency: Dependabot::Dependency).returns(String) }
|
|
63
63
|
def update_requirement(content:, filename:, dependency:)
|
|
64
64
|
updated_req =
|
|
65
|
-
dependency.requirements.find { |r| r
|
|
66
|
-
&.
|
|
65
|
+
dependency.requirements.find { |r| r.file == filename }
|
|
66
|
+
&.requirement_string
|
|
67
67
|
|
|
68
68
|
old_req =
|
|
69
69
|
dependency.previous_requirements
|
|
70
|
-
&.find { |r| r
|
|
71
|
-
&.
|
|
70
|
+
&.find { |r| r.file == filename }
|
|
71
|
+
&.requirement_string
|
|
72
72
|
|
|
73
73
|
return content unless old_req
|
|
74
74
|
|
|
@@ -83,13 +83,13 @@ module Dependabot
|
|
|
83
83
|
sig { params(content: String, filename: String, dependency: Dependabot::Dependency).returns(String) }
|
|
84
84
|
def update_git_pin(content:, filename:, dependency:)
|
|
85
85
|
updated_pin =
|
|
86
|
-
dependency.requirements.find { |r| r
|
|
87
|
-
&.
|
|
86
|
+
dependency.requirements.find { |r| r.file == filename }
|
|
87
|
+
&.source_string("ref")
|
|
88
88
|
|
|
89
89
|
old_pin =
|
|
90
90
|
dependency.previous_requirements
|
|
91
|
-
&.find { |r| r
|
|
92
|
-
&.
|
|
91
|
+
&.find { |r| r.file == filename }
|
|
92
|
+
&.source_string("ref")
|
|
93
93
|
|
|
94
94
|
return content unless old_pin
|
|
95
95
|
return content if old_pin == updated_pin
|
|
@@ -98,7 +98,7 @@ module Dependabot
|
|
|
98
98
|
dependency_name: dependency.name,
|
|
99
99
|
mixfile_content: content,
|
|
100
100
|
previous_pin: old_pin,
|
|
101
|
-
updated_pin: updated_pin
|
|
101
|
+
updated_pin: T.must(updated_pin)
|
|
102
102
|
).updated_content
|
|
103
103
|
end
|
|
104
104
|
end
|
|
@@ -47,10 +47,7 @@ module Dependabot
|
|
|
47
47
|
|
|
48
48
|
sig { returns(T.nilable(Dependabot::Source)) }
|
|
49
49
|
def find_source_from_git_url
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
url = info[:url] || info.fetch("url")
|
|
53
|
-
Source.from_url(url)
|
|
50
|
+
Source.from_url(dependency.source_string("url", allowed_types: ["git"]))
|
|
54
51
|
end
|
|
55
52
|
|
|
56
53
|
sig { returns(T.nilable(T::Hash[String, T.untyped])) }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "sorbet-runtime"
|
|
@@ -95,8 +95,8 @@ module Dependabot
|
|
|
95
95
|
sig { params(content: String, filename: String).returns(String) }
|
|
96
96
|
def relax_version(content, filename:)
|
|
97
97
|
old_requirement =
|
|
98
|
-
dependency.requirements.find { |r| r.
|
|
99
|
-
&.
|
|
98
|
+
dependency.requirements.find { |r| r.file == filename }
|
|
99
|
+
&.requirement_string
|
|
100
100
|
updated_requirement = updated_version_requirement_string(filename)
|
|
101
101
|
|
|
102
102
|
Hex::FileUpdater::MixfileRequirementUpdater.new(
|
|
@@ -124,20 +124,21 @@ module Dependabot
|
|
|
124
124
|
sig { params(filename: String).returns(String) }
|
|
125
125
|
def updated_version_req_lower_bound(filename)
|
|
126
126
|
original_req = dependency.requirements
|
|
127
|
-
.find { |r| r.
|
|
128
|
-
&.
|
|
127
|
+
.find { |r| r.file == filename }
|
|
128
|
+
&.requirement_string
|
|
129
129
|
|
|
130
130
|
if original_req && !unlock_requirement? then original_req
|
|
131
131
|
elsif dependency.version&.match?(/^[0-9a-f]{40}$/) then ">= 0"
|
|
132
132
|
elsif dependency.version then ">= #{dependency.version}"
|
|
133
133
|
else
|
|
134
134
|
version_for_requirement =
|
|
135
|
-
dependency.requirements
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
135
|
+
dependency.requirements
|
|
136
|
+
.filter_map(&:requirement_string)
|
|
137
|
+
.reject { |req_string| req_string.start_with?("<") }
|
|
138
|
+
.select { |req_string| req_string.match?(version_regex) }
|
|
139
|
+
.map { |req_string| req_string.match(version_regex) }
|
|
140
|
+
.select { |version| version_class.correct?(version.to_s) }
|
|
141
|
+
.max_by { |version| version_class.new(version.to_s) }
|
|
141
142
|
|
|
142
143
|
return ">= 0" unless version_for_requirement
|
|
143
144
|
|
|
@@ -155,8 +156,8 @@ module Dependabot
|
|
|
155
156
|
sig { params(content: String, filename: String).returns(String) }
|
|
156
157
|
def replace_git_pin(content, filename:)
|
|
157
158
|
old_pin =
|
|
158
|
-
dependency.requirements.find { |r| r.
|
|
159
|
-
&.
|
|
159
|
+
dependency.requirements.find { |r| r.file == filename }
|
|
160
|
+
&.source_string("ref")
|
|
160
161
|
|
|
161
162
|
return content unless old_pin
|
|
162
163
|
return content if old_pin == replacement_git_pin
|
|
@@ -212,7 +213,7 @@ module Dependabot
|
|
|
212
213
|
end
|
|
213
214
|
|
|
214
215
|
dependency.requirements.any? do |req|
|
|
215
|
-
req
|
|
216
|
+
req.requirement_string&.match?(/\d-[A-Za-z0-9]/)
|
|
216
217
|
end
|
|
217
218
|
end
|
|
218
219
|
|
|
@@ -228,7 +229,7 @@ module Dependabot
|
|
|
228
229
|
|
|
229
230
|
sig { params(file_name: String).returns(T::Boolean) }
|
|
230
231
|
def dependency_appears_in_file?(file_name)
|
|
231
|
-
dependency.requirements.any? { |r| r
|
|
232
|
+
dependency.requirements.any? { |r| r.file == file_name }
|
|
232
233
|
end
|
|
233
234
|
end
|
|
234
235
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "excon"
|
|
@@ -105,7 +105,7 @@ module Dependabot
|
|
|
105
105
|
return true if current_version&.prerelease?
|
|
106
106
|
|
|
107
107
|
dependency.requirements.any? do |req|
|
|
108
|
-
req
|
|
108
|
+
req.requirement_string&.match?(/\d-[A-Za-z0-9]/)
|
|
109
109
|
end
|
|
110
110
|
end
|
|
111
111
|
|
|
@@ -23,7 +23,7 @@ module Dependabot
|
|
|
23
23
|
params(
|
|
24
24
|
requirements: T::Array[Dependabot::DependencyRequirement],
|
|
25
25
|
latest_resolvable_version: T.nilable(String),
|
|
26
|
-
updated_source: T.nilable(
|
|
26
|
+
updated_source: T.nilable(Dependabot::DependencyRequirement::ObjectHash)
|
|
27
27
|
).void
|
|
28
28
|
end
|
|
29
29
|
def initialize(
|
|
@@ -57,7 +57,7 @@ module Dependabot
|
|
|
57
57
|
sig { returns(T.nilable(Dependabot::Version)) }
|
|
58
58
|
attr_reader :latest_resolvable_version
|
|
59
59
|
|
|
60
|
-
sig { returns(T.nilable(
|
|
60
|
+
sig { returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash)) }
|
|
61
61
|
attr_reader :updated_source
|
|
62
62
|
|
|
63
63
|
# rubocop:disable Metrics/PerceivedComplexity
|
|
@@ -65,25 +65,27 @@ module Dependabot
|
|
|
65
65
|
sig { params(req: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
|
|
66
66
|
def updated_mixfile_requirement(req)
|
|
67
67
|
req = update_source(req)
|
|
68
|
-
|
|
69
|
-
return req
|
|
68
|
+
requirement_string = req.requirement_string
|
|
69
|
+
return req unless latest_resolvable_version && requirement_string
|
|
70
|
+
return req if req_satisfied_by_latest_resolvable?(requirement_string)
|
|
70
71
|
|
|
71
|
-
or_string_reqs =
|
|
72
|
-
last_string_reqs = or_string_reqs.last
|
|
73
|
-
|
|
72
|
+
or_string_reqs = requirement_string.split(OR_SEPARATOR)
|
|
73
|
+
last_string_reqs = T.must(or_string_reqs.last)
|
|
74
|
+
.split(AND_SEPARATOR)
|
|
75
|
+
.map(&:strip)
|
|
74
76
|
|
|
75
77
|
new_requirement =
|
|
76
78
|
if last_string_reqs.any? { |r| r.match(/^(?:\d|=)/) }
|
|
77
79
|
exact_req = last_string_reqs.find { |r| r.match(/^(?:\d|=)/) }
|
|
78
|
-
update_exact_version(exact_req, T.must(latest_resolvable_version)).to_s
|
|
80
|
+
update_exact_version(T.must(exact_req), T.must(latest_resolvable_version)).to_s
|
|
79
81
|
elsif last_string_reqs.any? { |r| r.start_with?("~>") }
|
|
80
82
|
tw_req = last_string_reqs.find { |r| r.start_with?("~>") }
|
|
81
|
-
update_twiddle_version(tw_req, T.must(latest_resolvable_version)).to_s
|
|
83
|
+
update_twiddle_version(T.must(tw_req), T.must(latest_resolvable_version)).to_s
|
|
82
84
|
else
|
|
83
85
|
update_mixfile_range(last_string_reqs).join(" and ")
|
|
84
86
|
end
|
|
85
87
|
|
|
86
|
-
new_requirement =
|
|
88
|
+
new_requirement = requirement_string + " or " + new_requirement if or_string_reqs.count > 1
|
|
87
89
|
|
|
88
90
|
Dependabot::DependencyRequirement.create(req.merge(requirement: new_requirement))
|
|
89
91
|
end
|
|
@@ -96,7 +98,7 @@ module Dependabot
|
|
|
96
98
|
def update_source(requirement_hash)
|
|
97
99
|
# Only git sources ever need to be updated. Anything else should be
|
|
98
100
|
# left alone.
|
|
99
|
-
return requirement_hash unless requirement_hash.
|
|
101
|
+
return requirement_hash unless requirement_hash.source_string("type") == "git"
|
|
100
102
|
|
|
101
103
|
Dependabot::DependencyRequirement.create(requirement_hash.merge(source: updated_source))
|
|
102
104
|
end
|
|
@@ -167,7 +167,7 @@ module Dependabot
|
|
|
167
167
|
false
|
|
168
168
|
end
|
|
169
169
|
|
|
170
|
-
sig { returns(T.nilable(
|
|
170
|
+
sig { returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash)) }
|
|
171
171
|
def updated_source
|
|
172
172
|
# Never need to update source, unless a git_dependency
|
|
173
173
|
return dependency_source_details unless git_dependency?
|
|
@@ -176,18 +176,42 @@ module Dependabot
|
|
|
176
176
|
if git_commit_checker.pinned_ref_looks_like_version? &&
|
|
177
177
|
latest_git_tag_is_resolvable?
|
|
178
178
|
new_tag = git_commit_checker.local_tag_for_latest_version(update_cooldown)
|
|
179
|
-
return
|
|
179
|
+
return source_with_ref(
|
|
180
|
+
T.must(dependency_source_details),
|
|
181
|
+
T.cast(T.must(new_tag).fetch(:tag), String)
|
|
182
|
+
)
|
|
180
183
|
end
|
|
181
184
|
|
|
182
185
|
# Otherwise return the original source
|
|
183
186
|
dependency_source_details
|
|
184
187
|
end
|
|
185
188
|
|
|
186
|
-
sig { returns(T.nilable(
|
|
189
|
+
sig { returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash)) }
|
|
187
190
|
def dependency_source_details
|
|
188
191
|
dependency.source_details
|
|
189
192
|
end
|
|
190
193
|
|
|
194
|
+
sig do
|
|
195
|
+
params(
|
|
196
|
+
source: Dependabot::DependencyRequirement::ObjectHash,
|
|
197
|
+
ref: String
|
|
198
|
+
).returns(Dependabot::DependencyRequirement::ObjectHash)
|
|
199
|
+
end
|
|
200
|
+
def source_with_ref(source, ref)
|
|
201
|
+
updated_source = source.dup
|
|
202
|
+
key = if source.key?(:ref)
|
|
203
|
+
:ref
|
|
204
|
+
elsif source.key?("ref")
|
|
205
|
+
"ref"
|
|
206
|
+
elsif source.keys.any?(Symbol)
|
|
207
|
+
:ref
|
|
208
|
+
else
|
|
209
|
+
"ref"
|
|
210
|
+
end
|
|
211
|
+
updated_source[key] = ref
|
|
212
|
+
updated_source
|
|
213
|
+
end
|
|
214
|
+
|
|
191
215
|
sig do
|
|
192
216
|
params(unlock_requirement: T.any(T.nilable(Symbol), T::Boolean))
|
|
193
217
|
.returns(T.any(String, T.nilable(Dependabot::Version)))
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-hex
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.392.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.
|
|
18
|
+
version: 0.392.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.392.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: debug
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -274,7 +274,7 @@ licenses:
|
|
|
274
274
|
- MIT
|
|
275
275
|
metadata:
|
|
276
276
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
277
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
277
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.392.0
|
|
278
278
|
rdoc_options: []
|
|
279
279
|
require_paths:
|
|
280
280
|
- lib
|