dependabot-bundler 0.397.0 → 0.399.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/bundler/update_checker/latest_version_finder.rb +7 -3
- data/lib/dependabot/bundler/update_checker/shared_bundler_helpers.rb +7 -6
- data/lib/dependabot/bundler/update_checker/version_details.rb +81 -0
- data/lib/dependabot/bundler/update_checker/version_resolver.rb +27 -25
- data/lib/dependabot/bundler/update_checker.rb +28 -26
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 956510bd31180ba35712d9450f6d0588b573479b136329ee45a34399374f7bdd
|
|
4
|
+
data.tar.gz: fb4afe0f709028f4e5856cadb69179046498382038bd361d93cd9a401e4b2bbf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d5d4dcc4184dbe5da513afbe5cd9656d413c9fd0d47861997122357fe30c01b722871684957fa8a0fa05a10f7807a27cd1a4532549b8cf8986e489a9d0af119c
|
|
7
|
+
data.tar.gz: 651fc49c1125f02e0cd5283cb7f58144c47d4ba95c52b427f57aa321fd39bd5f81d2e6d84e67a5ac025ee16436d06ecf56009fb7303bde33a963d03cbe96808c
|
|
@@ -43,7 +43,7 @@ module Dependabot
|
|
|
43
43
|
options: {}
|
|
44
44
|
)
|
|
45
45
|
@package_details = T.let(nil, T.nilable(Dependabot::Package::PackageDetails))
|
|
46
|
-
@latest_version_details = T.let(nil, T.nilable(
|
|
46
|
+
@latest_version_details = T.let(nil, T.nilable(VersionDetails))
|
|
47
47
|
@releases_from_dependency_source = T.let(nil, T.nilable(T::Array[Dependabot::Package::PackageRelease]))
|
|
48
48
|
super
|
|
49
49
|
end
|
|
@@ -57,11 +57,15 @@ module Dependabot
|
|
|
57
57
|
).fetch
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
sig { returns(T.nilable(
|
|
60
|
+
sig { returns(T.nilable(VersionDetails)) }
|
|
61
61
|
def latest_version_details
|
|
62
62
|
@latest_version_details ||= begin
|
|
63
63
|
latest_version = fetch_latest_version(language_version: nil)
|
|
64
|
-
|
|
64
|
+
if latest_version
|
|
65
|
+
raise TypeError, "expected a Bundler version" unless latest_version.is_a?(Dependabot::Bundler::Version)
|
|
66
|
+
|
|
67
|
+
VersionDetails.new(version: latest_version)
|
|
68
|
+
end
|
|
65
69
|
end
|
|
66
70
|
end
|
|
67
71
|
|
|
@@ -74,11 +74,12 @@ module Dependabot
|
|
|
74
74
|
#########################
|
|
75
75
|
|
|
76
76
|
sig do
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
type_parameters(:T)
|
|
78
|
+
.params(
|
|
79
|
+
error_handling: T::Boolean,
|
|
80
|
+
_blk: T.proc.params(arg0: String).returns(T.type_parameter(:T))
|
|
81
|
+
)
|
|
82
|
+
.returns(T.type_parameter(:T))
|
|
82
83
|
end
|
|
83
84
|
def in_a_native_bundler_context(error_handling: true, &_blk)
|
|
84
85
|
SharedHelpers
|
|
@@ -115,7 +116,7 @@ module Dependabot
|
|
|
115
116
|
# rubocop:disable Metrics/PerceivedComplexity
|
|
116
117
|
# rubocop:disable Metrics/AbcSize
|
|
117
118
|
# rubocop:disable Metrics/MethodLength
|
|
118
|
-
sig { params(error: Dependabot::SharedHelpers::HelperSubprocessFailed).
|
|
119
|
+
sig { params(error: Dependabot::SharedHelpers::HelperSubprocessFailed).returns(T.noreturn) }
|
|
119
120
|
def handle_bundler_errors(error)
|
|
120
121
|
if error.error_class == "JSON::ParserError"
|
|
121
122
|
msg = "Error evaluating your dependency files: #{error.message}"
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "sorbet-runtime"
|
|
5
|
+
require "dependabot/shared_helpers"
|
|
6
|
+
require "dependabot/bundler/version"
|
|
7
|
+
require "dependabot/bundler/update_checker"
|
|
8
|
+
|
|
9
|
+
module Dependabot
|
|
10
|
+
module Bundler
|
|
11
|
+
class UpdateChecker < Dependabot::UpdateCheckers::Base
|
|
12
|
+
class VersionDetails < T::ImmutableStruct
|
|
13
|
+
extend T::Sig
|
|
14
|
+
|
|
15
|
+
class InvalidResult < SharedHelpers::HelperSubprocessFailed; end
|
|
16
|
+
|
|
17
|
+
ObjectHash = T.type_alias { T::Hash[String, Object] }
|
|
18
|
+
|
|
19
|
+
const :version, Dependabot::Bundler::Version
|
|
20
|
+
const :ruby_version, T.nilable(String), default: nil
|
|
21
|
+
const :fetcher, T.nilable(String), default: nil
|
|
22
|
+
const :commit_sha, T.nilable(String), default: nil
|
|
23
|
+
|
|
24
|
+
sig { params(result: Object).returns(VersionDetails) }
|
|
25
|
+
def self.from_helper_result(result)
|
|
26
|
+
fields = object_fields(result)
|
|
27
|
+
new(
|
|
28
|
+
version: parse_version(fields["version"]),
|
|
29
|
+
ruby_version: optional_string(fields["ruby_version"], "ruby_version"),
|
|
30
|
+
fetcher: optional_string(fields["fetcher"], "fetcher"),
|
|
31
|
+
commit_sha: optional_string(fields["commit_sha"], "commit_sha")
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
sig { params(value: Object).returns(ObjectHash) }
|
|
36
|
+
def self.object_fields(value)
|
|
37
|
+
invalid_result(" must be an object") unless value.is_a?(Hash)
|
|
38
|
+
|
|
39
|
+
value.to_h do |raw_key, raw_value|
|
|
40
|
+
key = T.cast(raw_key, Object)
|
|
41
|
+
invalid_result(" keys must be strings") unless key.is_a?(String)
|
|
42
|
+
|
|
43
|
+
[key, T.cast(raw_value, Object)]
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
private_class_method :object_fields
|
|
47
|
+
|
|
48
|
+
sig { params(value: Object).returns(Dependabot::Bundler::Version) }
|
|
49
|
+
def self.parse_version(value)
|
|
50
|
+
invalid_result(".version must be a string") unless value.is_a?(String)
|
|
51
|
+
|
|
52
|
+
# Version.new's inherited signature returns the base class.
|
|
53
|
+
T.cast(Dependabot::Bundler::Version.new(value), Dependabot::Bundler::Version)
|
|
54
|
+
rescue ArgumentError
|
|
55
|
+
invalid_result(".version must be a valid version")
|
|
56
|
+
end
|
|
57
|
+
private_class_method :parse_version
|
|
58
|
+
|
|
59
|
+
sig { params(value: Object, field: String).returns(T.nilable(String)) }
|
|
60
|
+
def self.optional_string(value, field)
|
|
61
|
+
return if value.nil?
|
|
62
|
+
return value if value.is_a?(String)
|
|
63
|
+
|
|
64
|
+
invalid_result(".#{field} must be a string or nil")
|
|
65
|
+
end
|
|
66
|
+
private_class_method :optional_string
|
|
67
|
+
|
|
68
|
+
sig { params(message: String).returns(T.noreturn) }
|
|
69
|
+
def self.invalid_result(message)
|
|
70
|
+
raise InvalidResult.new(
|
|
71
|
+
message: "resolve_version result#{message}",
|
|
72
|
+
error_class: "TypeError",
|
|
73
|
+
error_context: { function: "resolve_version" }
|
|
74
|
+
),
|
|
75
|
+
cause: nil
|
|
76
|
+
end
|
|
77
|
+
private_class_method :invalid_result
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -67,14 +67,14 @@ module Dependabot
|
|
|
67
67
|
@options = options
|
|
68
68
|
|
|
69
69
|
@latest_allowable_version_incompatible_with_ruby = T.let(false, T::Boolean)
|
|
70
|
-
@latest_resolvable_version_details = T.let(nil, T.nilable(
|
|
70
|
+
@latest_resolvable_version_details = T.let(nil, T.nilable(VersionDetails))
|
|
71
71
|
@dependency_files = T.let(nil, T.nilable(T::Array[Dependabot::DependencyFile]))
|
|
72
|
-
@latest_version_details = T.let(nil, T.nilable(
|
|
72
|
+
@latest_version_details = T.let(nil, T.nilable(VersionDetails))
|
|
73
73
|
@gemspec_ruby_unlocked = T.let(false, T::Boolean)
|
|
74
74
|
@bundler_version = T.let(nil, T.nilable(String))
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
sig { returns(T.nilable(
|
|
77
|
+
sig { returns(T.nilable(VersionDetails)) }
|
|
78
78
|
def latest_resolvable_version_details
|
|
79
79
|
@latest_resolvable_version_details ||=
|
|
80
80
|
fetch_latest_resolvable_version_details
|
|
@@ -136,7 +136,7 @@ module Dependabot
|
|
|
136
136
|
end
|
|
137
137
|
|
|
138
138
|
# rubocop:disable Metrics/PerceivedComplexity
|
|
139
|
-
sig { returns(T.nilable(
|
|
139
|
+
sig { returns(T.nilable(VersionDetails)) }
|
|
140
140
|
def fetch_latest_resolvable_version_details
|
|
141
141
|
return latest_version_details unless gemfile
|
|
142
142
|
|
|
@@ -145,7 +145,7 @@ module Dependabot
|
|
|
145
145
|
# some errors we want to handle specifically ourselves, including
|
|
146
146
|
# potentially retrying in the case of the Ruby version being locked
|
|
147
147
|
in_a_native_bundler_context(error_handling: false) do |tmp_dir|
|
|
148
|
-
|
|
148
|
+
result = NativeHelpers.run_bundler_subprocess(
|
|
149
149
|
bundler_version: bundler_version,
|
|
150
150
|
function: "resolve_version",
|
|
151
151
|
options: options,
|
|
@@ -159,23 +159,24 @@ module Dependabot
|
|
|
159
159
|
}
|
|
160
160
|
)
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
result = T.cast(result, Object)
|
|
163
|
+
return latest_version_details if result == "latest"
|
|
164
|
+
return if result.nil?
|
|
163
165
|
|
|
164
|
-
|
|
165
|
-
details.transform_keys!(&:to_sym)
|
|
166
|
+
details = VersionDetails.from_helper_result(result)
|
|
166
167
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
168
|
+
# If the old Gemfile index was used then it won't have checked
|
|
169
|
+
# Ruby compatibility. Fix that by doing the check manually and
|
|
170
|
+
# saying no update is possible if the Ruby version is a
|
|
171
|
+
# mismatch
|
|
172
|
+
return if ruby_version_incompatible?(details)
|
|
172
173
|
|
|
173
|
-
details[:version] = Dependabot::Bundler::Version.new(details[:version])
|
|
174
|
-
end
|
|
175
174
|
details
|
|
176
175
|
end
|
|
177
176
|
end
|
|
178
177
|
rescue Dependabot::SharedHelpers::HelperSubprocessFailed => e
|
|
178
|
+
raise if e.is_a?(VersionDetails::InvalidResult)
|
|
179
|
+
|
|
179
180
|
return if error_due_to_restrictive_upper_bound?(e)
|
|
180
181
|
return if circular_dependency_at_new_version?(e)
|
|
181
182
|
|
|
@@ -184,7 +185,8 @@ module Dependabot
|
|
|
184
185
|
handle_bundler_errors(e) unless ruby_lock_error?(e)
|
|
185
186
|
|
|
186
187
|
@gemspec_ruby_unlocked = true
|
|
187
|
-
regenerate_dependency_files_without_ruby_lock
|
|
188
|
+
regenerate_dependency_files_without_ruby_lock
|
|
189
|
+
retry
|
|
188
190
|
end
|
|
189
191
|
# rubocop:enable Metrics/PerceivedComplexity
|
|
190
192
|
|
|
@@ -206,7 +208,7 @@ module Dependabot
|
|
|
206
208
|
error.message.include?("#{dependency.name} ")
|
|
207
209
|
end
|
|
208
210
|
|
|
209
|
-
sig { params(error:
|
|
211
|
+
sig { params(error: Dependabot::SharedHelpers::HelperSubprocessFailed).returns(T::Boolean) }
|
|
210
212
|
def ruby_lock_error?(error)
|
|
211
213
|
return false unless conflict_on_ruby?(error)
|
|
212
214
|
return false if @gemspec_ruby_unlocked
|
|
@@ -223,7 +225,7 @@ module Dependabot
|
|
|
223
225
|
end
|
|
224
226
|
end
|
|
225
227
|
|
|
226
|
-
sig {
|
|
228
|
+
sig { void }
|
|
227
229
|
def regenerate_dependency_files_without_ruby_lock
|
|
228
230
|
@dependency_files =
|
|
229
231
|
FilePreparer.new(
|
|
@@ -235,10 +237,9 @@ module Dependabot
|
|
|
235
237
|
latest_allowable_version: latest_allowable_version,
|
|
236
238
|
lock_ruby_version: false
|
|
237
239
|
).prepared_dependency_files
|
|
238
|
-
true
|
|
239
240
|
end
|
|
240
241
|
|
|
241
|
-
sig { returns(T.nilable(
|
|
242
|
+
sig { returns(T.nilable(VersionDetails)) }
|
|
242
243
|
def latest_version_details
|
|
243
244
|
@latest_version_details ||=
|
|
244
245
|
LatestVersionFinder.new(
|
|
@@ -253,13 +254,14 @@ module Dependabot
|
|
|
253
254
|
).latest_version_details
|
|
254
255
|
end
|
|
255
256
|
|
|
256
|
-
sig { params(details:
|
|
257
|
+
sig { params(details: VersionDetails).returns(T::Boolean) }
|
|
257
258
|
def ruby_version_incompatible?(details)
|
|
258
259
|
# It's only the old index we have a problem with
|
|
259
|
-
return false unless details
|
|
260
|
+
return false unless details.fetcher == "Bundler::Fetcher::Dependency"
|
|
260
261
|
|
|
261
262
|
# If no Ruby version is specified, we don't have a problem
|
|
262
|
-
|
|
263
|
+
ruby_version = details.ruby_version
|
|
264
|
+
return false unless ruby_version
|
|
263
265
|
|
|
264
266
|
versions = Dependabot::RegistryClient.get(
|
|
265
267
|
url: "https://rubygems.org/api/v1/versions/#{dependency.name}.json",
|
|
@@ -272,7 +274,7 @@ module Dependabot
|
|
|
272
274
|
|
|
273
275
|
ruby_requirement =
|
|
274
276
|
JSON.parse(versions.body)
|
|
275
|
-
.find { |version| version["number"] == details
|
|
277
|
+
.find { |version| version["number"] == details.version.to_semver }
|
|
276
278
|
&.fetch("ruby_version", nil)
|
|
277
279
|
|
|
278
280
|
# Give the benefit of the doubt if we can't find the version's
|
|
@@ -280,7 +282,7 @@ module Dependabot
|
|
|
280
282
|
return false unless ruby_requirement
|
|
281
283
|
|
|
282
284
|
ruby_requirement = Dependabot::Bundler::Requirement.new(ruby_requirement)
|
|
283
|
-
current_ruby_version = Dependabot::Bundler::Version.new(
|
|
285
|
+
current_ruby_version = Dependabot::Bundler::Version.new(ruby_version)
|
|
284
286
|
|
|
285
287
|
return false if ruby_requirement.satisfied_by?(current_ruby_version)
|
|
286
288
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "dependabot/bundler/file_updater/requirement_replacer"
|
|
@@ -16,6 +16,7 @@ module Dependabot
|
|
|
16
16
|
# ecosystem update checkers (npm_and_yarn, bun, docker, python) disable this cop
|
|
17
17
|
# for the same reason, so the exception is retained deliberately.
|
|
18
18
|
class UpdateChecker < Dependabot::UpdateCheckers::Base # rubocop:disable Metrics/ClassLength
|
|
19
|
+
require_relative "update_checker/version_details"
|
|
19
20
|
require_relative "update_checker/force_updater"
|
|
20
21
|
require_relative "update_checker/file_preparer"
|
|
21
22
|
require_relative "update_checker/requirements_updater"
|
|
@@ -29,14 +30,14 @@ module Dependabot
|
|
|
29
30
|
def latest_version
|
|
30
31
|
return latest_version_for_git_dependency if git_dependency?
|
|
31
32
|
|
|
32
|
-
latest_version_details&.
|
|
33
|
+
latest_version_details&.version
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
sig { override.returns(T.nilable(T.any(String, Dependabot::Bundler::Version))) }
|
|
36
37
|
def latest_resolvable_version
|
|
37
38
|
return latest_resolvable_version_for_git_dependency if git_dependency?
|
|
38
39
|
|
|
39
|
-
latest_resolvable_version_details&.
|
|
40
|
+
latest_resolvable_version_details&.version
|
|
40
41
|
end
|
|
41
42
|
|
|
42
43
|
sig { override.returns(T.nilable(Dependabot::Bundler::Version)) }
|
|
@@ -67,7 +68,7 @@ module Dependabot
|
|
|
67
68
|
|
|
68
69
|
@latest_resolvable_version_detail_with_no_unlock = T.let(
|
|
69
70
|
@latest_resolvable_version_detail_with_no_unlock,
|
|
70
|
-
T.nilable(
|
|
71
|
+
T.nilable(VersionDetails)
|
|
71
72
|
)
|
|
72
73
|
|
|
73
74
|
@latest_resolvable_version_detail_with_no_unlock ||=
|
|
@@ -75,16 +76,16 @@ module Dependabot
|
|
|
75
76
|
.latest_resolvable_version_details
|
|
76
77
|
|
|
77
78
|
if git_dependency?
|
|
78
|
-
@latest_resolvable_version_detail_with_no_unlock&.
|
|
79
|
+
@latest_resolvable_version_detail_with_no_unlock&.commit_sha
|
|
79
80
|
else
|
|
80
|
-
@latest_resolvable_version_detail_with_no_unlock&.
|
|
81
|
+
@latest_resolvable_version_detail_with_no_unlock&.version
|
|
81
82
|
end
|
|
82
83
|
end
|
|
83
84
|
|
|
84
85
|
sig { override.returns(T::Array[Dependabot::DependencyRequirement]) }
|
|
85
86
|
def updated_requirements
|
|
86
|
-
latest_version_for_req_updater = latest_version_details&.
|
|
87
|
-
latest_resolvable_version_for_req_updater = preferred_resolvable_version_details&.
|
|
87
|
+
latest_version_for_req_updater = latest_version_details&.version&.to_s
|
|
88
|
+
latest_resolvable_version_for_req_updater = preferred_resolvable_version_details&.version&.to_s
|
|
88
89
|
|
|
89
90
|
RequirementsUpdater.new(
|
|
90
91
|
requirements: dependency.requirements,
|
|
@@ -204,9 +205,12 @@ module Dependabot
|
|
|
204
205
|
force_updater.updated_dependencies
|
|
205
206
|
end
|
|
206
207
|
|
|
207
|
-
sig { returns(T.nilable(
|
|
208
|
+
sig { returns(T.nilable(VersionDetails)) }
|
|
208
209
|
def preferred_resolvable_version_details
|
|
209
|
-
|
|
210
|
+
if vulnerable?
|
|
211
|
+
version = lowest_resolvable_security_fix_version
|
|
212
|
+
return version && VersionDetails.new(version: version)
|
|
213
|
+
end
|
|
210
214
|
|
|
211
215
|
latest_resolvable_version_details
|
|
212
216
|
end
|
|
@@ -263,17 +267,17 @@ module Dependabot
|
|
|
263
267
|
end
|
|
264
268
|
end
|
|
265
269
|
|
|
266
|
-
sig { params(remove_git_source: T::Boolean).returns(T.nilable(
|
|
270
|
+
sig { params(remove_git_source: T::Boolean).returns(T.nilable(VersionDetails)) }
|
|
267
271
|
def latest_version_details(remove_git_source: false)
|
|
268
|
-
@latest_version_details ||= T.let({}, T.nilable(T::Hash[T
|
|
272
|
+
@latest_version_details ||= T.let({}, T.nilable(T::Hash[T::Boolean, T.nilable(VersionDetails)]))
|
|
269
273
|
@latest_version_details[remove_git_source] ||=
|
|
270
274
|
latest_version_finder(remove_git_source: remove_git_source)
|
|
271
275
|
.latest_version_details
|
|
272
276
|
end
|
|
273
277
|
|
|
274
|
-
sig { params(remove_git_source: T::Boolean).returns(T.nilable(
|
|
278
|
+
sig { params(remove_git_source: T::Boolean).returns(T.nilable(VersionDetails)) }
|
|
275
279
|
def latest_resolvable_version_details(remove_git_source: false)
|
|
276
|
-
@latest_resolvable_version_details ||= T.let({}, T.nilable(T::Hash[T
|
|
280
|
+
@latest_resolvable_version_details ||= T.let({}, T.nilable(T::Hash[T::Boolean, T.nilable(VersionDetails)]))
|
|
277
281
|
@latest_resolvable_version_details[remove_git_source] ||=
|
|
278
282
|
version_resolver(remove_git_source: remove_git_source)
|
|
279
283
|
.latest_resolvable_version_details
|
|
@@ -283,7 +287,7 @@ module Dependabot
|
|
|
283
287
|
def latest_version_for_git_dependency
|
|
284
288
|
latest_release =
|
|
285
289
|
latest_version_details(remove_git_source: true)
|
|
286
|
-
&.
|
|
290
|
+
&.version
|
|
287
291
|
|
|
288
292
|
# If there's been a release that includes the current pinned ref or
|
|
289
293
|
# that the current branch is behind, we switch to that release.
|
|
@@ -329,12 +333,12 @@ module Dependabot
|
|
|
329
333
|
dependency.version
|
|
330
334
|
end
|
|
331
335
|
|
|
332
|
-
sig { returns(T.
|
|
336
|
+
sig { returns(T.nilable(Dependabot::Bundler::Version)) }
|
|
333
337
|
def latest_resolvable_version_without_git_source
|
|
334
338
|
return nil unless latest_version.is_a?(Gem::Version)
|
|
335
339
|
|
|
336
340
|
latest_resolvable_version_details(remove_git_source: true)
|
|
337
|
-
&.
|
|
341
|
+
&.version
|
|
338
342
|
rescue Dependabot::DependencyFileNotResolvable
|
|
339
343
|
nil
|
|
340
344
|
end
|
|
@@ -346,9 +350,7 @@ module Dependabot
|
|
|
346
350
|
# If this dependency has a git version in the Gemfile.lock but not in
|
|
347
351
|
# the Gemfile (i.e., because they're out-of-sync) we might not get a
|
|
348
352
|
# commit_sha back from Bundler. In that case, return `nil`.
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
details.fetch(:commit_sha)
|
|
353
|
+
details&.commit_sha
|
|
352
354
|
rescue Dependabot::DependencyFileNotResolvable
|
|
353
355
|
nil
|
|
354
356
|
end
|
|
@@ -361,7 +363,7 @@ module Dependabot
|
|
|
361
363
|
git_tag_resolvable?(latest_tag_details.tag)
|
|
362
364
|
end
|
|
363
365
|
|
|
364
|
-
sig { params(release: T.
|
|
366
|
+
sig { params(release: T.nilable(Dependabot::Bundler::Version)).returns(T::Boolean) }
|
|
365
367
|
def git_branch_or_ref_in_release?(release)
|
|
366
368
|
return false unless release
|
|
367
369
|
|
|
@@ -423,11 +425,11 @@ module Dependabot
|
|
|
423
425
|
)
|
|
424
426
|
end
|
|
425
427
|
|
|
426
|
-
sig { params(remove_git_source: T::Boolean, unlock_requirement: T::Boolean).returns(
|
|
428
|
+
sig { params(remove_git_source: T::Boolean, unlock_requirement: T::Boolean).returns(VersionResolver) }
|
|
427
429
|
def version_resolver(remove_git_source:, unlock_requirement: true)
|
|
428
|
-
@version_resolver ||= T.let({}, T.nilable(T::Hash[T
|
|
429
|
-
@version_resolver[remove_git_source] ||= {}
|
|
430
|
-
|
|
430
|
+
@version_resolver ||= T.let({}, T.nilable(T::Hash[T::Boolean, T::Hash[T::Boolean, VersionResolver]]))
|
|
431
|
+
resolvers = @version_resolver[remove_git_source] ||= {}
|
|
432
|
+
resolvers[unlock_requirement] ||=
|
|
431
433
|
VersionResolver.new(
|
|
432
434
|
dependency: dependency,
|
|
433
435
|
unprepared_dependency_files: dependency_files,
|
|
@@ -445,7 +447,7 @@ module Dependabot
|
|
|
445
447
|
|
|
446
448
|
sig { params(remove_git_source: T::Boolean).returns(Dependabot::Bundler::UpdateChecker::LatestVersionFinder) }
|
|
447
449
|
def latest_version_finder(remove_git_source:)
|
|
448
|
-
@latest_version_finder ||= T.let({}, T.nilable(T::Hash[T
|
|
450
|
+
@latest_version_finder ||= T.let({}, T.nilable(T::Hash[T::Boolean, LatestVersionFinder]))
|
|
449
451
|
@latest_version_finder[remove_git_source] ||=
|
|
450
452
|
begin
|
|
451
453
|
prepared_dependency_files = prepared_dependency_files(
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-bundler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.399.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.399.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.399.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: parallel
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -354,6 +354,7 @@ files:
|
|
|
354
354
|
- lib/dependabot/bundler/update_checker/latest_version_finder/dependency_source.rb
|
|
355
355
|
- lib/dependabot/bundler/update_checker/requirements_updater.rb
|
|
356
356
|
- lib/dependabot/bundler/update_checker/shared_bundler_helpers.rb
|
|
357
|
+
- lib/dependabot/bundler/update_checker/version_details.rb
|
|
357
358
|
- lib/dependabot/bundler/update_checker/version_resolver.rb
|
|
358
359
|
- lib/dependabot/bundler/version.rb
|
|
359
360
|
homepage: https://github.com/dependabot/dependabot-core
|
|
@@ -361,7 +362,7 @@ licenses:
|
|
|
361
362
|
- MIT
|
|
362
363
|
metadata:
|
|
363
364
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
364
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
365
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.399.0
|
|
365
366
|
rdoc_options: []
|
|
366
367
|
require_paths:
|
|
367
368
|
- lib
|