dependabot-bundler 0.389.0 → 0.391.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/file_parser.rb +2 -2
- data/lib/dependabot/bundler/file_updater/gemfile_updater.rb +17 -18
- data/lib/dependabot/bundler/file_updater/gemspec_updater.rb +9 -9
- data/lib/dependabot/bundler/file_updater/git_pin_replacer.rb +5 -5
- data/lib/dependabot/bundler/file_updater/git_source_remover.rb +4 -4
- data/lib/dependabot/bundler/file_updater/lockfile_updater.rb +15 -14
- data/lib/dependabot/bundler/file_updater/requirement_replacer.rb +6 -6
- data/lib/dependabot/bundler/metadata_finder.rb +14 -17
- data/lib/dependabot/bundler/package/package_details_fetcher.rb +4 -4
- data/lib/dependabot/bundler/requirement.rb +3 -3
- data/lib/dependabot/bundler/update_checker/file_preparer.rb +14 -14
- data/lib/dependabot/bundler/update_checker/force_updater.rb +4 -4
- data/lib/dependabot/bundler/update_checker/latest_version_finder/dependency_source.rb +4 -2
- data/lib/dependabot/bundler/update_checker/latest_version_finder.rb +2 -2
- data/lib/dependabot/bundler/update_checker/requirements_updater.rb +13 -11
- data/lib/dependabot/bundler/update_checker.rb +1 -1
- 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: 672d87cda96727e07addcdfc985c06c305ba63f344405f55ff4b10dd36562096
|
|
4
|
+
data.tar.gz: 6a19d0836c030bc9aaa9b27a4b1761fe11bb27e0afc8ecc6b1d1ae001872a892
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3ba582280818476c7829d113c8ce8d6658240d9295f497736621418c9d8d0e85b1aefa555ea4dbd2f6296149fe8f7e2b4527f176edf6d3bfeb3393f0bd94e90c
|
|
7
|
+
data.tar.gz: '08fc1b1c9f73c5649a53758f60a41a8139211f48fa81b371cce24666fd79ae6000e998c802808664ee8d54675047693c11bc15d544cbcd6598b43c75cd962d23'
|
|
@@ -104,7 +104,7 @@ module Dependabot
|
|
|
104
104
|
sig { params(dependencies: T::Array[Dependabot::Dependency]).returns(T::Boolean) }
|
|
105
105
|
def git_source?(dependencies)
|
|
106
106
|
dependencies.any? do |dep|
|
|
107
|
-
dep.requirements.any? { |req| req.
|
|
107
|
+
dep.requirements.any? { |req| req.source_string("type") == "git" }
|
|
108
108
|
end
|
|
109
109
|
end
|
|
110
110
|
|
|
@@ -380,7 +380,7 @@ module Dependabot
|
|
|
380
380
|
sig { params(dependency: Dependabot::Dependency).returns(T::Boolean) }
|
|
381
381
|
def production?(dependency)
|
|
382
382
|
groups = dependency.requirements
|
|
383
|
-
.flat_map { |r| r.
|
|
383
|
+
.flat_map { |r| r.groups || [] }
|
|
384
384
|
.map(&:to_s)
|
|
385
385
|
|
|
386
386
|
return true if groups.empty?
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "dependabot/bundler/file_updater"
|
|
@@ -56,18 +56,18 @@ module Dependabot
|
|
|
56
56
|
|
|
57
57
|
updated_requirement =
|
|
58
58
|
dependency.requirements
|
|
59
|
-
.find { |r| r
|
|
60
|
-
&.
|
|
59
|
+
.find { |r| r.file == file.name }
|
|
60
|
+
&.requirement_string
|
|
61
61
|
|
|
62
62
|
previous_requirement =
|
|
63
63
|
dependency.previous_requirements
|
|
64
|
-
&.find { |r| r
|
|
65
|
-
&.
|
|
64
|
+
&.find { |r| r.file == file.name }
|
|
65
|
+
&.requirement_string
|
|
66
66
|
|
|
67
67
|
RequirementReplacer.new(
|
|
68
68
|
dependency: dependency,
|
|
69
69
|
file_type: :gemfile,
|
|
70
|
-
updated_requirement: updated_requirement,
|
|
70
|
+
updated_requirement: T.must(updated_requirement),
|
|
71
71
|
previous_requirement: previous_requirement
|
|
72
72
|
).rewrite(content)
|
|
73
73
|
end
|
|
@@ -77,34 +77,34 @@ module Dependabot
|
|
|
77
77
|
changed_requirements =
|
|
78
78
|
dependency.requirements - T.must(dependency.previous_requirements)
|
|
79
79
|
|
|
80
|
-
changed_requirements.any? { |f| f
|
|
80
|
+
changed_requirements.any? { |f| f.file == file.name }
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
sig { params(dependency: Dependabot::Dependency).returns(T::Boolean) }
|
|
84
84
|
def remove_git_source?(dependency)
|
|
85
85
|
old_gemfile_req =
|
|
86
86
|
dependency.previous_requirements
|
|
87
|
-
&.find { |f| GEMFILE_FILENAMES.include?(f
|
|
87
|
+
&.find { |f| GEMFILE_FILENAMES.include?(f.file) }
|
|
88
88
|
|
|
89
|
-
return false unless old_gemfile_req&.
|
|
89
|
+
return false unless old_gemfile_req&.source_string("type") == "git"
|
|
90
90
|
|
|
91
91
|
new_gemfile_req =
|
|
92
92
|
dependency.requirements
|
|
93
|
-
.find { |f| GEMFILE_FILENAMES.include?(f
|
|
93
|
+
.find { |f| GEMFILE_FILENAMES.include?(f.file) }
|
|
94
94
|
|
|
95
|
-
T.must(new_gemfile_req)
|
|
95
|
+
T.must(new_gemfile_req).source.nil?
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
sig { params(dependency: Dependabot::Dependency, file: Dependabot::DependencyFile).returns(T::Boolean) }
|
|
99
99
|
def update_git_pin?(dependency, file)
|
|
100
100
|
new_gemfile_req =
|
|
101
101
|
dependency.requirements
|
|
102
|
-
.find { |f| f
|
|
103
|
-
return false unless new_gemfile_req&.
|
|
102
|
+
.find { |f| f.file == file.name }
|
|
103
|
+
return false unless new_gemfile_req&.source_string("type") == "git"
|
|
104
104
|
|
|
105
105
|
# If the new requirement is a git dependency with a ref then there's
|
|
106
106
|
# no harm in doing an update
|
|
107
|
-
!T.must(new_gemfile_req).
|
|
107
|
+
!T.must(new_gemfile_req).source_string("ref").nil?
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
sig { params(dependency: Dependabot::Dependency, content: String).returns(String) }
|
|
@@ -118,12 +118,11 @@ module Dependabot
|
|
|
118
118
|
def update_gemfile_git_pin(dependency, file, content)
|
|
119
119
|
new_pin =
|
|
120
120
|
dependency.requirements
|
|
121
|
-
.find { |f| f
|
|
122
|
-
&.
|
|
123
|
-
&.fetch(:ref)
|
|
121
|
+
.find { |f| f.file == file.name }
|
|
122
|
+
&.source_string("ref")
|
|
124
123
|
|
|
125
124
|
GitPinReplacer
|
|
126
|
-
.new(dependency: dependency, new_pin: new_pin)
|
|
125
|
+
.new(dependency: dependency, new_pin: T.must(new_pin))
|
|
127
126
|
.rewrite(content)
|
|
128
127
|
end
|
|
129
128
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "dependabot/bundler/file_updater"
|
|
@@ -13,8 +13,8 @@ module Dependabot
|
|
|
13
13
|
|
|
14
14
|
sig { params(dependencies: T::Array[Dependabot::Dependency], gemspec: Dependabot::DependencyFile).void }
|
|
15
15
|
def initialize(dependencies:, gemspec:)
|
|
16
|
-
@dependencies =
|
|
17
|
-
@gemspec =
|
|
16
|
+
@dependencies = dependencies
|
|
17
|
+
@gemspec = gemspec
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
sig { returns(String) }
|
|
@@ -51,21 +51,21 @@ module Dependabot
|
|
|
51
51
|
updated_requirement =
|
|
52
52
|
T.must(
|
|
53
53
|
dependency.requirements
|
|
54
|
-
.find { |r| r
|
|
54
|
+
.find { |r| r.file == gemspec.name }
|
|
55
55
|
)
|
|
56
|
-
.
|
|
56
|
+
.requirement_string
|
|
57
57
|
|
|
58
58
|
previous_requirement =
|
|
59
59
|
T.must(
|
|
60
60
|
T.must(dependency.previous_requirements)
|
|
61
|
-
.find { |r| r
|
|
61
|
+
.find { |r| r.file == gemspec.name }
|
|
62
62
|
)
|
|
63
|
-
.
|
|
63
|
+
.requirement_string
|
|
64
64
|
|
|
65
65
|
RequirementReplacer.new(
|
|
66
66
|
dependency: dependency,
|
|
67
67
|
file_type: :gemspec,
|
|
68
|
-
updated_requirement: updated_requirement,
|
|
68
|
+
updated_requirement: T.must(updated_requirement),
|
|
69
69
|
previous_requirement: previous_requirement
|
|
70
70
|
).rewrite(content)
|
|
71
71
|
end
|
|
@@ -75,7 +75,7 @@ module Dependabot
|
|
|
75
75
|
changed_requirements =
|
|
76
76
|
dependency.requirements - T.must(dependency.previous_requirements)
|
|
77
77
|
|
|
78
|
-
changed_requirements.any? { |f| f
|
|
78
|
+
changed_requirements.any? { |f| f.file == file.name }
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
end
|
|
@@ -20,8 +20,8 @@ module Dependabot
|
|
|
20
20
|
|
|
21
21
|
sig { params(dependency: Dependabot::Dependency, new_pin: String).void }
|
|
22
22
|
def initialize(dependency:, new_pin:)
|
|
23
|
-
@dependency =
|
|
24
|
-
@new_pin =
|
|
23
|
+
@dependency = dependency
|
|
24
|
+
@new_pin = new_pin
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
sig { params(content: String).returns(String) }
|
|
@@ -38,7 +38,7 @@ module Dependabot
|
|
|
38
38
|
class Rewriter < Parser::TreeRewriter
|
|
39
39
|
extend T::Sig
|
|
40
40
|
|
|
41
|
-
PIN_KEYS =
|
|
41
|
+
PIN_KEYS = %i(ref tag).freeze
|
|
42
42
|
|
|
43
43
|
sig { returns(Dependabot::Dependency) }
|
|
44
44
|
attr_reader :dependency
|
|
@@ -49,8 +49,8 @@ module Dependabot
|
|
|
49
49
|
sig { params(dependency: Dependabot::Dependency, new_pin: String).void }
|
|
50
50
|
def initialize(dependency:, new_pin:)
|
|
51
51
|
super()
|
|
52
|
-
@dependency =
|
|
53
|
-
@new_pin =
|
|
52
|
+
@dependency = dependency
|
|
53
|
+
@new_pin = new_pin
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
sig { params(node: Parser::AST::Node).void }
|
|
@@ -44,7 +44,7 @@ module Dependabot
|
|
|
44
44
|
|
|
45
45
|
sig { params(dependency: Dependabot::Dependency).void }
|
|
46
46
|
def initialize(dependency:)
|
|
47
|
-
@dependency =
|
|
47
|
+
@dependency = dependency
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
sig { params(node: Parser::AST::Node).void }
|
|
@@ -57,10 +57,10 @@ module Dependabot
|
|
|
57
57
|
key_from_hash_pair(hash_pair)
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
if keys.
|
|
61
|
-
remove_all_kwargs(node)
|
|
62
|
-
else
|
|
60
|
+
if keys.intersect?(GOOD_KEYS)
|
|
63
61
|
remove_git_related_kwargs(kwargs_node)
|
|
62
|
+
else
|
|
63
|
+
remove_all_kwargs(node)
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
|
|
@@ -29,9 +29,7 @@ module Dependabot
|
|
|
29
29
|
# No `/m`: it would let the greedy `.*` in `entries` match newlines and
|
|
30
30
|
# swallow the trailing `BUNDLED WITH` section. `^` is line-anchored anyway.
|
|
31
31
|
CHECKSUMS_SECTION = /(^CHECKSUMS\n)(?<entries>(?:^ .*\n)+)/
|
|
32
|
-
BUNDLED_WITH_VERSION_REGEX = /BUNDLED WITH\s+(?<version>\d+\.\d+\.\d+)/m
|
|
33
32
|
BUNDLER_CHECKSUM_ENTRY_REGEX = /^ bundler \([^)]+\).*\n?$/
|
|
34
|
-
MIN_BUNDLER_CHECKSUM_VERSION = Gem::Version.new("4.0.11")
|
|
35
33
|
|
|
36
34
|
sig do
|
|
37
35
|
params(
|
|
@@ -49,11 +47,11 @@ module Dependabot
|
|
|
49
47
|
options:,
|
|
50
48
|
repo_contents_path: nil
|
|
51
49
|
)
|
|
52
|
-
@dependencies =
|
|
53
|
-
@dependency_files =
|
|
54
|
-
@repo_contents_path =
|
|
55
|
-
@credentials =
|
|
56
|
-
@options =
|
|
50
|
+
@dependencies = dependencies
|
|
51
|
+
@dependency_files = dependency_files
|
|
52
|
+
@repo_contents_path = repo_contents_path
|
|
53
|
+
@credentials = credentials
|
|
54
|
+
@options = options
|
|
57
55
|
@updated_lockfile_content = T.let(nil, T.nilable(String))
|
|
58
56
|
@gemfile = T.let(nil, T.nilable(Dependabot::DependencyFile))
|
|
59
57
|
@lockfile = T.let(nil, T.nilable(Dependabot::DependencyFile))
|
|
@@ -250,14 +248,17 @@ module Dependabot
|
|
|
250
248
|
lockfile_content = T.must(lockfile).content
|
|
251
249
|
return false unless lockfile_content&.include?("CHECKSUMS\n")
|
|
252
250
|
|
|
251
|
+
# Strip a bundler self-checksum only when the original CHECKSUMS
|
|
252
|
+
# section did not contain one. If the original pins one,
|
|
253
|
+
# restore_bundler_checksum separately swaps a generated entry back to
|
|
254
|
+
# the original when present. Dependabot must not introduce a missing
|
|
255
|
+
# entry: the runner's regular-gem install can calculate a checksum that
|
|
256
|
+
# a default-gem install cannot (ruby/rubygems#9512), and its runtime
|
|
257
|
+
# bundler version need not match BUNDLED WITH because Dependabot does
|
|
258
|
+
# not manage that version. This can add unrelated or mismatched
|
|
259
|
+
# metadata and cause lockfile churn.
|
|
253
260
|
checksums_section = lockfile_content.match(CHECKSUMS_SECTION)
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
bundled_with = lockfile_content.match(BUNDLED_WITH_VERSION_REGEX)&.[](:version)
|
|
257
|
-
return false unless bundled_with
|
|
258
|
-
|
|
259
|
-
bundled_with_version = Gem::Version.new(bundled_with)
|
|
260
|
-
bundled_with_version >= Gem::Version.new("4.0.0") && bundled_with_version < MIN_BUNDLER_CHECKSUM_VERSION
|
|
261
|
+
!(checksums_section && T.must(checksums_section[:entries]).match?(BUNDLER_CHECKSUM_ENTRY_REGEX))
|
|
261
262
|
end
|
|
262
263
|
|
|
263
264
|
sig { params(lockfile_body: String).returns(String) }
|
|
@@ -117,7 +117,7 @@ module Dependabot
|
|
|
117
117
|
|
|
118
118
|
# TODO: Ideally we wouldn't have to ignore all of these, but
|
|
119
119
|
# implementing each one will be tricky.
|
|
120
|
-
SKIPPED_TYPES =
|
|
120
|
+
SKIPPED_TYPES = %i(send lvar dstr begin if case splat const or).freeze
|
|
121
121
|
|
|
122
122
|
sig do
|
|
123
123
|
params(
|
|
@@ -133,10 +133,10 @@ module Dependabot
|
|
|
133
133
|
updated_requirement:,
|
|
134
134
|
insert_if_bare:
|
|
135
135
|
)
|
|
136
|
-
@dependency =
|
|
137
|
-
@file_type =
|
|
138
|
-
@updated_requirement =
|
|
139
|
-
@insert_if_bare =
|
|
136
|
+
@dependency = dependency
|
|
137
|
+
@file_type = file_type
|
|
138
|
+
@updated_requirement = updated_requirement
|
|
139
|
+
@insert_if_bare = insert_if_bare
|
|
140
140
|
|
|
141
141
|
return if %i(gemfile gemspec).include?(file_type)
|
|
142
142
|
|
|
@@ -231,7 +231,7 @@ module Dependabot
|
|
|
231
231
|
end
|
|
232
232
|
|
|
233
233
|
ops = Gem::Requirement::OPS.keys
|
|
234
|
-
return true if ops.none? { |op| req_string.
|
|
234
|
+
return true if ops.none? { |op| req_string.index(op) }
|
|
235
235
|
|
|
236
236
|
req_string.include?(" ")
|
|
237
237
|
end
|
|
@@ -11,19 +11,16 @@ module Dependabot
|
|
|
11
11
|
class MetadataFinder < Dependabot::MetadataFinders::Base
|
|
12
12
|
extend T::Sig
|
|
13
13
|
|
|
14
|
-
SOURCE_KEYS =
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
).freeze,
|
|
25
|
-
T::Array[String]
|
|
26
|
-
)
|
|
14
|
+
SOURCE_KEYS = %w(
|
|
15
|
+
source_code_uri
|
|
16
|
+
homepage_uri
|
|
17
|
+
wiki_uri
|
|
18
|
+
bug_tracker_uri
|
|
19
|
+
documentation_uri
|
|
20
|
+
changelog_uri
|
|
21
|
+
mailing_list_uri
|
|
22
|
+
download_uri
|
|
23
|
+
).freeze
|
|
27
24
|
|
|
28
25
|
sig do
|
|
29
26
|
params(
|
|
@@ -95,9 +92,9 @@ module Dependabot
|
|
|
95
92
|
|
|
96
93
|
sig { returns(T.nilable(Dependabot::Source)) }
|
|
97
94
|
def find_source_from_git_url
|
|
98
|
-
info = dependency.requirements.filter_map
|
|
95
|
+
info = T.must(dependency.requirements.filter_map(&:source_hash).first)
|
|
99
96
|
|
|
100
|
-
url = info[:url] || info.fetch("url")
|
|
97
|
+
url = T.cast(info[:url] || info.fetch("url"), T.nilable(String))
|
|
101
98
|
Source.from_url(url)
|
|
102
99
|
end
|
|
103
100
|
|
|
@@ -222,8 +219,8 @@ module Dependabot
|
|
|
222
219
|
def registry_url
|
|
223
220
|
return base_url if new_source_type == "default"
|
|
224
221
|
|
|
225
|
-
info = dependency.requirements.filter_map
|
|
226
|
-
info[:url] || info.fetch("url")
|
|
222
|
+
info = T.must(dependency.requirements.filter_map(&:source_hash).first)
|
|
223
|
+
T.cast(info[:url] || info.fetch("url"), String)
|
|
227
224
|
end
|
|
228
225
|
|
|
229
226
|
sig { returns(String) }
|
|
@@ -214,9 +214,9 @@ module Dependabot
|
|
|
214
214
|
return nil unless dependency&.requirements&.any?
|
|
215
215
|
|
|
216
216
|
first_requirement = dependency.requirements.first
|
|
217
|
-
return nil unless first_requirement
|
|
217
|
+
return nil unless first_requirement
|
|
218
218
|
|
|
219
|
-
url =
|
|
219
|
+
url = first_requirement.source_string("url")
|
|
220
220
|
return nil unless url
|
|
221
221
|
|
|
222
222
|
url.end_with?("/") ? url.chop : url
|
|
@@ -242,9 +242,9 @@ module Dependabot
|
|
|
242
242
|
return nil unless dependency.requirements.any?
|
|
243
243
|
|
|
244
244
|
first_requirement = dependency.requirements.first
|
|
245
|
-
return nil unless first_requirement
|
|
245
|
+
return nil unless first_requirement
|
|
246
246
|
|
|
247
|
-
first_requirement
|
|
247
|
+
first_requirement.source_string("type")
|
|
248
248
|
end
|
|
249
249
|
|
|
250
250
|
sig { override.returns(String) }
|
|
@@ -11,11 +11,11 @@ module Dependabot
|
|
|
11
11
|
class Requirement < Dependabot::Requirement
|
|
12
12
|
extend T::Sig
|
|
13
13
|
|
|
14
|
-
GEM_DEP_SPLIT =
|
|
14
|
+
GEM_DEP_SPLIT = /\A(?<name>[a-zA-Z0-9_\-]+):(?<version>.+)\z/
|
|
15
15
|
|
|
16
|
-
sig { params(req:
|
|
16
|
+
sig { params(req: Dependabot::DependencyRequirement, version: Gem::Version).returns(T::Boolean) }
|
|
17
17
|
def self.satisfied_by?(req, version)
|
|
18
|
-
new(req
|
|
18
|
+
new(req.requirement_string).satisfied_by?(version)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
# For consistency with other languages, we define a requirements array.
|
|
@@ -62,16 +62,16 @@ module Dependabot
|
|
|
62
62
|
latest_allowable_version: nil,
|
|
63
63
|
lock_ruby_version: true
|
|
64
64
|
)
|
|
65
|
-
@dependency_files =
|
|
66
|
-
@dependency =
|
|
67
|
-
@remove_git_source =
|
|
68
|
-
@unlock_requirement =
|
|
69
|
-
@replacement_git_pin =
|
|
65
|
+
@dependency_files = dependency_files
|
|
66
|
+
@dependency = dependency
|
|
67
|
+
@remove_git_source = remove_git_source
|
|
68
|
+
@unlock_requirement = unlock_requirement
|
|
69
|
+
@replacement_git_pin = replacement_git_pin
|
|
70
70
|
@latest_allowable_version = T.let(
|
|
71
71
|
latest_allowable_version&.to_s,
|
|
72
72
|
T.nilable(String)
|
|
73
73
|
)
|
|
74
|
-
@lock_ruby_version =
|
|
74
|
+
@lock_ruby_version = lock_ruby_version
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
# rubocop:disable Metrics/AbcSize
|
|
@@ -273,20 +273,20 @@ module Dependabot
|
|
|
273
273
|
sig { params(filename: String).returns(String) }
|
|
274
274
|
def updated_version_req_lower_bound(filename) # rubocop:disable Metrics/CyclomaticComplexity
|
|
275
275
|
original_req = dependency.requirements
|
|
276
|
-
.find { |r| r.
|
|
277
|
-
&.
|
|
276
|
+
.find { |r| r.file == filename }
|
|
277
|
+
&.requirement_string
|
|
278
278
|
|
|
279
279
|
if original_req && !unlock_requirement? then original_req
|
|
280
280
|
elsif dependency.version&.match?(/^[0-9a-f]{40}$/) then ">= 0"
|
|
281
281
|
elsif dependency.version then ">= #{dependency.version}"
|
|
282
282
|
else
|
|
283
283
|
version_for_requirement =
|
|
284
|
-
dependency.requirements.
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
284
|
+
dependency.requirements.filter_map(&:requirement_string)
|
|
285
|
+
.reject { |req_string| req_string.start_with?("<") }
|
|
286
|
+
.select { |req_string| req_string.match?(VERSION_REGEX) }
|
|
287
|
+
.map { |req_string| req_string.match(VERSION_REGEX)&.to_s }
|
|
288
|
+
.select { |version| Bundler::Version.correct?(version) }
|
|
289
|
+
.max_by { |version| Bundler::Version.new(version) }
|
|
290
290
|
|
|
291
291
|
">= #{version_for_requirement || 0}"
|
|
292
292
|
end
|
|
@@ -94,7 +94,7 @@ module Dependabot
|
|
|
94
94
|
# rubocop:disable Metrics/AbcSize
|
|
95
95
|
sig { returns(T::Array[Dependabot::Dependency]) }
|
|
96
96
|
def force_update
|
|
97
|
-
requirement = dependency.requirements.find { |req| req
|
|
97
|
+
requirement = dependency.requirements.find { |req| req.file == T.must(gemfile).name }
|
|
98
98
|
|
|
99
99
|
valid_gem_version?(target_version)
|
|
100
100
|
|
|
@@ -192,11 +192,11 @@ module Dependabot
|
|
|
192
192
|
)
|
|
193
193
|
end
|
|
194
194
|
|
|
195
|
-
sig { params(dependency: Dependabot::Dependency).returns(T.nilable(
|
|
195
|
+
sig { params(dependency: Dependabot::Dependency).returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash)) }
|
|
196
196
|
def source_for(dependency)
|
|
197
197
|
dependency.requirements
|
|
198
|
-
.find
|
|
199
|
-
&.
|
|
198
|
+
.find(&:source)
|
|
199
|
+
&.source_hash
|
|
200
200
|
end
|
|
201
201
|
|
|
202
202
|
sig { returns(T.nilable(Dependabot::DependencyFile)) }
|
|
@@ -85,8 +85,10 @@ module Dependabot
|
|
|
85
85
|
return unless git?
|
|
86
86
|
|
|
87
87
|
source_details =
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
T.must(
|
|
89
|
+
dependency.requirements.map(&:source_hash)
|
|
90
|
+
.uniq.compact.first
|
|
91
|
+
)
|
|
90
92
|
|
|
91
93
|
SharedHelpers.with_git_configured(credentials: credentials) do
|
|
92
94
|
in_a_native_bundler_context do |tmp_dir|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "excon"
|
|
@@ -128,7 +128,7 @@ module Dependabot
|
|
|
128
128
|
begin
|
|
129
129
|
current_version = dependency.numeric_version
|
|
130
130
|
current_version&.prerelease? || dependency.requirements.any? do |req|
|
|
131
|
-
req
|
|
131
|
+
T.must(req.requirement_string).match?(/[a-z]/i)
|
|
132
132
|
end
|
|
133
133
|
end,
|
|
134
134
|
T.nilable(T::Boolean)
|
|
@@ -28,7 +28,7 @@ module Dependabot
|
|
|
28
28
|
params(
|
|
29
29
|
requirements: T::Array[Dependabot::DependencyRequirement],
|
|
30
30
|
update_strategy: Dependabot::RequirementsUpdateStrategy,
|
|
31
|
-
updated_source: T.nilable(
|
|
31
|
+
updated_source: T.nilable(Dependabot::DependencyRequirement::ObjectHash),
|
|
32
32
|
latest_version: T.nilable(String),
|
|
33
33
|
latest_resolvable_version: T.nilable(String)
|
|
34
34
|
).void
|
|
@@ -66,7 +66,7 @@ module Dependabot
|
|
|
66
66
|
return requirements if update_strategy.lockfile_only?
|
|
67
67
|
|
|
68
68
|
requirements.map do |req|
|
|
69
|
-
if req
|
|
69
|
+
if T.must(req.file).include?(".gemspec")
|
|
70
70
|
update_gemspec_requirement(req)
|
|
71
71
|
else
|
|
72
72
|
# If a requirement doesn't come from a gemspec, it must be from
|
|
@@ -81,7 +81,7 @@ module Dependabot
|
|
|
81
81
|
sig { returns(T::Array[Dependabot::DependencyRequirement]) }
|
|
82
82
|
attr_reader :requirements
|
|
83
83
|
|
|
84
|
-
sig { returns(T.nilable(
|
|
84
|
+
sig { returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash)) }
|
|
85
85
|
attr_reader :updated_source
|
|
86
86
|
|
|
87
87
|
sig { returns(T.nilable(Dependabot::Bundler::Version)) }
|
|
@@ -124,13 +124,14 @@ module Dependabot
|
|
|
124
124
|
sig { params(req: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
|
|
125
125
|
def update_version_requirement(req)
|
|
126
126
|
requirements =
|
|
127
|
-
req
|
|
127
|
+
T.must(req.requirement_string).split(",").map { |r| Gem::Requirement.new(r) }
|
|
128
128
|
|
|
129
129
|
new_requirement =
|
|
130
|
-
if requirements.any?(&:exact?)
|
|
130
|
+
if requirements.any?(&:exact?)
|
|
131
|
+
latest_resolvable_version.to_s
|
|
131
132
|
elsif requirements.any? { |r| r.to_s.start_with?("~>") }
|
|
132
133
|
tw_req = requirements.find { |r| r.to_s.start_with?("~>") }
|
|
133
|
-
update_twiddle_version(tw_req, T.must(latest_resolvable_version)).to_s
|
|
134
|
+
update_twiddle_version(T.must(tw_req), T.must(latest_resolvable_version)).to_s
|
|
134
135
|
else
|
|
135
136
|
update_gemfile_range(requirements).join(", ")
|
|
136
137
|
end
|
|
@@ -185,21 +186,22 @@ module Dependabot
|
|
|
185
186
|
# rubocop:disable Metrics/PerceivedComplexity
|
|
186
187
|
sig { params(req: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
|
|
187
188
|
def update_gemspec_requirement(req)
|
|
188
|
-
req = Dependabot::DependencyRequirement.create(req.merge(source: updated_source)) if req.
|
|
189
|
+
req = Dependabot::DependencyRequirement.create(req.merge(source: updated_source)) if req.source
|
|
189
190
|
return req unless latest_version && latest_resolvable_version
|
|
190
191
|
|
|
191
192
|
requirements =
|
|
192
|
-
req
|
|
193
|
+
T.must(req.requirement_string).split(",").map { |r| Gem::Requirement.new(r) }
|
|
194
|
+
groups = T.must(req.groups).map(&:to_s)
|
|
193
195
|
|
|
194
196
|
return req if requirements.all? do |r|
|
|
195
|
-
requirement_satisfied?(r,
|
|
197
|
+
requirement_satisfied?(r, groups)
|
|
196
198
|
end
|
|
197
199
|
|
|
198
200
|
updated_requirements =
|
|
199
201
|
requirements.flat_map do |r|
|
|
200
|
-
next r if requirement_satisfied?(r,
|
|
202
|
+
next r if requirement_satisfied?(r, groups)
|
|
201
203
|
|
|
202
|
-
if
|
|
204
|
+
if groups == ["development"] then bumped_requirements(r)
|
|
203
205
|
else
|
|
204
206
|
widened_requirements(r)
|
|
205
207
|
end
|
|
@@ -102,7 +102,7 @@ module Dependabot
|
|
|
102
102
|
|
|
103
103
|
dependency.specific_requirements
|
|
104
104
|
.all? do |req|
|
|
105
|
-
file = T.must(dependency_files.find { |f| f.name == req.
|
|
105
|
+
file = T.must(dependency_files.find { |f| f.name == req.file })
|
|
106
106
|
updated = FileUpdater::RequirementReplacer.new(
|
|
107
107
|
dependency: dependency,
|
|
108
108
|
file_type: file.name.end_with?("gemspec") ? :gemspec : :gemfile,
|
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.391.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.391.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.391.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: parallel
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -354,7 +354,7 @@ licenses:
|
|
|
354
354
|
- MIT
|
|
355
355
|
metadata:
|
|
356
356
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
357
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
357
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.391.0
|
|
358
358
|
rdoc_options: []
|
|
359
359
|
require_paths:
|
|
360
360
|
- lib
|