dependabot-swift 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/swift/file_parser/manifest_parser.rb +8 -7
- data/lib/dependabot/swift/file_parser/xcode_spm_resolver.rb +12 -10
- data/lib/dependabot/swift/file_parser.rb +6 -3
- data/lib/dependabot/swift/file_updater/manifest_updater.rb +8 -25
- data/lib/dependabot/swift/file_updater/xcode_lockfile_updater.rb +2 -3
- data/lib/dependabot/swift/file_updater.rb +2 -2
- data/lib/dependabot/swift/native_requirement.rb +27 -13
- data/lib/dependabot/swift/update_checker/requirements_updater.rb +34 -12
- data/lib/dependabot/swift/update_checker/xcode_version_resolver.rb +4 -4
- data/lib/dependabot/swift/update_checker.rb +10 -4
- 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: c6a333247d7e23cf5e8864c7f83ace86688a723b74ef1a0c25211fddbbde92f9
|
|
4
|
+
data.tar.gz: d22ef8c29b754afb10ce11b98f8010da8a32c81803ce4a6e8122c3569827bd62
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '078abe54878e9667b261411ded8caffd38717dc8f620dcffb9806aca36bf9fa23bf71562b4d7297954d05b8b0c1d8f503d1401ade54da804b79c96079a0bbb0f'
|
|
7
|
+
data.tar.gz: aa477876d59ba302ae34d79d93b7c7e0299818a92d293190aab22cecf8561e04d9213f1f7c335db33dc992d10246b55afda15c4b37ce555c9161dbf1b67744c3
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "dependabot/file_parsers/base"
|
|
5
|
+
require "dependabot/dependency_requirement"
|
|
5
6
|
require "dependabot/swift/native_requirement"
|
|
6
7
|
|
|
7
8
|
module Dependabot
|
|
@@ -19,18 +20,18 @@ module Dependabot
|
|
|
19
20
|
sig do
|
|
20
21
|
params(
|
|
21
22
|
manifest: Dependabot::DependencyFile,
|
|
22
|
-
|
|
23
|
+
requirement: Dependabot::DependencyRequirement
|
|
23
24
|
).void
|
|
24
25
|
end
|
|
25
|
-
def initialize(manifest,
|
|
26
|
+
def initialize(manifest, requirement:)
|
|
26
27
|
@manifest = manifest
|
|
27
|
-
@
|
|
28
|
+
@requirement = requirement
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
sig { returns(T::Array[T::Hash[Symbol, Object]]) }
|
|
31
32
|
def requirements
|
|
32
33
|
found = manifest.content&.scan(DEPENDENCY)&.find do |_declaration, url, _requirement|
|
|
33
|
-
SharedHelpers.scp_to_standard(url.to_s) ==
|
|
34
|
+
SharedHelpers.scp_to_standard(url.to_s) == requirement.source_string("url")
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
return [] unless found
|
|
@@ -43,7 +44,7 @@ module Dependabot
|
|
|
43
44
|
requirement: requirement.to_s,
|
|
44
45
|
groups: ["dependencies"],
|
|
45
46
|
file: manifest.name,
|
|
46
|
-
source:
|
|
47
|
+
source: T.must(self.requirement.source_hash),
|
|
47
48
|
metadata: { declaration_string: declaration, requirement_string: requirement.declaration }
|
|
48
49
|
}
|
|
49
50
|
]
|
|
@@ -54,8 +55,8 @@ module Dependabot
|
|
|
54
55
|
sig { returns(Dependabot::DependencyFile) }
|
|
55
56
|
attr_reader :manifest
|
|
56
57
|
|
|
57
|
-
sig { returns(
|
|
58
|
-
attr_reader :
|
|
58
|
+
sig { returns(Dependabot::DependencyRequirement) }
|
|
59
|
+
attr_reader :requirement
|
|
59
60
|
end
|
|
60
61
|
end
|
|
61
62
|
end
|
|
@@ -142,16 +142,18 @@ module Dependabot
|
|
|
142
142
|
kind = req_info[:kind]
|
|
143
143
|
|
|
144
144
|
new_requirements = dep.requirements.map do |req|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
145
|
+
Dependabot::DependencyRequirement.create(
|
|
146
|
+
req.merge(
|
|
147
|
+
requirement: requirement_str || req.requirement,
|
|
148
|
+
file: pbxproj_file,
|
|
149
|
+
metadata: {
|
|
150
|
+
# declaration_string is not applicable for Xcode-managed SPM
|
|
151
|
+
# (no Package.swift manifest to extract it from)
|
|
152
|
+
declaration_string: nil,
|
|
153
|
+
requirement_string: requirement_string,
|
|
154
|
+
kind: kind
|
|
155
|
+
}.compact
|
|
156
|
+
)
|
|
155
157
|
)
|
|
156
158
|
end
|
|
157
159
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "dependabot/dependency"
|
|
@@ -52,9 +52,12 @@ module Dependabot
|
|
|
52
52
|
|
|
53
53
|
dependency_parser.parse.map do |dep|
|
|
54
54
|
if dep.top_level?
|
|
55
|
-
|
|
55
|
+
requirement = T.must(dep.requirements.first)
|
|
56
56
|
|
|
57
|
-
requirements = ManifestParser.new(
|
|
57
|
+
requirements = ManifestParser.new(
|
|
58
|
+
T.must(package_manifest_file),
|
|
59
|
+
requirement: requirement
|
|
60
|
+
).requirements
|
|
58
61
|
|
|
59
62
|
dependency_set << Dependency.new(
|
|
60
63
|
name: dep.name,
|
|
@@ -14,8 +14,8 @@ module Dependabot
|
|
|
14
14
|
sig do
|
|
15
15
|
params(
|
|
16
16
|
content: String,
|
|
17
|
-
old_requirements: T::Array[
|
|
18
|
-
new_requirements: T::Array[
|
|
17
|
+
old_requirements: T::Array[Dependabot::DependencyRequirement],
|
|
18
|
+
new_requirements: T::Array[Dependabot::DependencyRequirement]
|
|
19
19
|
)
|
|
20
20
|
.void
|
|
21
21
|
end
|
|
@@ -30,13 +30,12 @@ module Dependabot
|
|
|
30
30
|
updated_content = content
|
|
31
31
|
|
|
32
32
|
old_requirements.zip(new_requirements).each do |old, new|
|
|
33
|
-
|
|
34
|
-
new_metadata = metadata(T.must(new))
|
|
33
|
+
new_requirement = T.must(new)
|
|
35
34
|
updated_content = RequirementReplacer.new(
|
|
36
35
|
content: updated_content,
|
|
37
|
-
declaration:
|
|
38
|
-
old_requirement:
|
|
39
|
-
new_requirement:
|
|
36
|
+
declaration: T.must(old.metadata_string("declaration_string")),
|
|
37
|
+
old_requirement: T.must(old.metadata_string("requirement_string")),
|
|
38
|
+
new_requirement: T.must(new_requirement.metadata_string("requirement_string"))
|
|
40
39
|
).updated_content
|
|
41
40
|
end
|
|
42
41
|
|
|
@@ -48,27 +47,11 @@ module Dependabot
|
|
|
48
47
|
sig { returns(String) }
|
|
49
48
|
attr_reader :content
|
|
50
49
|
|
|
51
|
-
sig { returns(T::Array[
|
|
50
|
+
sig { returns(T::Array[Dependabot::DependencyRequirement]) }
|
|
52
51
|
attr_reader :old_requirements
|
|
53
52
|
|
|
54
|
-
sig { returns(T::Array[
|
|
53
|
+
sig { returns(T::Array[Dependabot::DependencyRequirement]) }
|
|
55
54
|
attr_reader :new_requirements
|
|
56
|
-
|
|
57
|
-
sig { params(requirement: T::Hash[Symbol, Object]).returns(T::Hash[Symbol, Object]) }
|
|
58
|
-
def metadata(requirement)
|
|
59
|
-
value = requirement[:metadata]
|
|
60
|
-
raise TypeError, "Expected metadata to be a Hash" unless value.is_a?(Hash)
|
|
61
|
-
|
|
62
|
-
value
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
sig { params(hash: T::Hash[Symbol, Object], key: Symbol).returns(String) }
|
|
66
|
-
def string_value(hash, key)
|
|
67
|
-
value = hash.fetch(key)
|
|
68
|
-
raise TypeError, "Expected #{key} to be a String" unless value.is_a?(String)
|
|
69
|
-
|
|
70
|
-
value
|
|
71
|
-
end
|
|
72
55
|
end
|
|
73
56
|
end
|
|
74
57
|
end
|
|
@@ -169,9 +169,8 @@ module Dependabot
|
|
|
169
169
|
state = pin["state"]
|
|
170
170
|
return unless state.is_a?(Hash)
|
|
171
171
|
|
|
172
|
-
source = dependency.requirements.first&.dig(:source)
|
|
173
172
|
new_version = dependency.version
|
|
174
|
-
new_ref =
|
|
173
|
+
new_ref = dependency.requirements.first&.source_string("ref")
|
|
175
174
|
|
|
176
175
|
if new_version
|
|
177
176
|
state["version"] = new_version
|
|
@@ -228,7 +227,7 @@ module Dependabot
|
|
|
228
227
|
@dependencies_for_file ||= T.let(
|
|
229
228
|
dependencies.select do |dep|
|
|
230
229
|
dep.requirements.any? do |req|
|
|
231
|
-
req_file_matches_resolved_scope?(req
|
|
230
|
+
req_file_matches_resolved_scope?(req.file)
|
|
232
231
|
end
|
|
233
232
|
end,
|
|
234
233
|
T.nilable(T::Array[Dependabot::Dependency])
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "dependabot/file_updaters"
|
|
@@ -141,7 +141,7 @@ module Dependabot
|
|
|
141
141
|
|
|
142
142
|
sig { params(dep: Dependabot::Dependency).returns(T::Set[String]) }
|
|
143
143
|
def requirement_files_for(dep)
|
|
144
|
-
files = dep.requirements.map
|
|
144
|
+
files = dep.requirements.map(&:file) + (dep.previous_requirements || []).map(&:file)
|
|
145
145
|
files.compact.to_set
|
|
146
146
|
end
|
|
147
147
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "dependabot/utils"
|
|
5
|
+
require "dependabot/dependency_requirement"
|
|
5
6
|
require "dependabot/swift/requirement"
|
|
6
7
|
require "sorbet-runtime"
|
|
7
8
|
|
|
@@ -17,33 +18,46 @@ module Dependabot
|
|
|
17
18
|
attr_reader :declaration
|
|
18
19
|
|
|
19
20
|
sig do
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
)
|
|
25
|
-
.returns(T::Array[T::Hash[Symbol, Object]])
|
|
21
|
+
params(
|
|
22
|
+
requirements: T::Array[Dependabot::DependencyRequirement],
|
|
23
|
+
_blk: T.proc.params(declaration: NativeRequirement).returns(String)
|
|
24
|
+
)
|
|
25
|
+
.returns(T::Array[Dependabot::DependencyRequirement])
|
|
26
26
|
end
|
|
27
27
|
def self.map_requirements(requirements, &_blk)
|
|
28
28
|
requirements.map do |requirement|
|
|
29
|
-
metadata = requirement
|
|
30
|
-
next requirement unless metadata
|
|
29
|
+
metadata = requirement.metadata
|
|
30
|
+
next requirement unless metadata
|
|
31
31
|
|
|
32
|
-
requirement_string =
|
|
33
|
-
next requirement unless requirement_string
|
|
32
|
+
requirement_string = requirement.metadata_string("requirement_string")
|
|
33
|
+
next requirement unless requirement_string
|
|
34
34
|
|
|
35
35
|
declaration = new(requirement_string)
|
|
36
36
|
|
|
37
37
|
new_declaration = yield(declaration)
|
|
38
38
|
new_requirement = new(new_declaration)
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
requirement
|
|
42
|
-
|
|
40
|
+
Dependabot::DependencyRequirement.create(
|
|
41
|
+
requirement.merge(
|
|
42
|
+
requirement: new_requirement.to_s,
|
|
43
|
+
metadata: requirement_string_metadata(metadata, new_declaration)
|
|
44
|
+
)
|
|
43
45
|
)
|
|
44
46
|
end
|
|
45
47
|
end
|
|
46
48
|
|
|
49
|
+
sig do
|
|
50
|
+
params(
|
|
51
|
+
metadata: Dependabot::DependencyRequirement::ObjectHash,
|
|
52
|
+
requirement_string: String
|
|
53
|
+
).returns(Dependabot::DependencyRequirement::ObjectHash)
|
|
54
|
+
end
|
|
55
|
+
def self.requirement_string_metadata(metadata, requirement_string)
|
|
56
|
+
key = metadata.key?("requirement_string") ? "requirement_string" : :requirement_string
|
|
57
|
+
{ key => requirement_string }
|
|
58
|
+
end
|
|
59
|
+
private_class_method :requirement_string_metadata
|
|
60
|
+
|
|
47
61
|
sig { params(declaration: String).void }
|
|
48
62
|
def initialize(declaration)
|
|
49
63
|
@declaration = declaration
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "dependabot/dependency_requirement"
|
|
@@ -70,23 +70,22 @@ module Dependabot
|
|
|
70
70
|
|
|
71
71
|
sig { params(requirement: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
|
|
72
72
|
def update_xcode_requirement(requirement)
|
|
73
|
-
metadata = requirement
|
|
74
|
-
requirement_string =
|
|
75
|
-
kind =
|
|
73
|
+
metadata = requirement.metadata || {}
|
|
74
|
+
requirement_string = requirement.metadata_string("requirement_string")
|
|
75
|
+
kind = requirement.metadata_string("kind")
|
|
76
76
|
|
|
77
77
|
new_requirement_string = build_xcode_requirement_string(requirement_string, kind)
|
|
78
78
|
new_requirement = build_xcode_requirement(requirement_string, kind)
|
|
79
79
|
|
|
80
80
|
# Update source ref to target version
|
|
81
|
-
updated_source = update_source_ref(requirement
|
|
81
|
+
updated_source = update_source_ref(requirement.source_hash)
|
|
82
|
+
updated_metadata = hash_with_value(metadata, "requirement_string", new_requirement_string)
|
|
82
83
|
|
|
83
84
|
Dependabot::DependencyRequirement.create(
|
|
84
85
|
requirement.merge(
|
|
85
86
|
requirement: new_requirement,
|
|
86
87
|
source: updated_source,
|
|
87
|
-
metadata:
|
|
88
|
-
requirement_string: new_requirement_string
|
|
89
|
-
).compact
|
|
88
|
+
metadata: updated_metadata
|
|
90
89
|
)
|
|
91
90
|
)
|
|
92
91
|
end
|
|
@@ -103,10 +102,33 @@ module Dependabot
|
|
|
103
102
|
# otherwise fall back to version string
|
|
104
103
|
ref = target_commit_sha || target_version.to_s
|
|
105
104
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
hash_with_value(source, "ref", ref)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
sig do
|
|
109
|
+
params(
|
|
110
|
+
hash: Dependabot::DependencyRequirement::ObjectHash,
|
|
111
|
+
key: String,
|
|
112
|
+
value: T.nilable(Object)
|
|
113
|
+
).returns(Dependabot::DependencyRequirement::ObjectHash)
|
|
114
|
+
end
|
|
115
|
+
def hash_with_value(hash, key, value)
|
|
116
|
+
updated = hash.dup
|
|
117
|
+
actual_key = if hash.key?(key.to_sym)
|
|
118
|
+
key.to_sym
|
|
119
|
+
elsif hash.key?(key)
|
|
120
|
+
key
|
|
121
|
+
elsif hash.keys.any?(Symbol)
|
|
122
|
+
key.to_sym
|
|
123
|
+
else
|
|
124
|
+
key
|
|
125
|
+
end
|
|
126
|
+
if value.nil?
|
|
127
|
+
updated.delete(actual_key)
|
|
128
|
+
else
|
|
129
|
+
updated[actual_key] = value
|
|
130
|
+
end
|
|
131
|
+
updated
|
|
110
132
|
end
|
|
111
133
|
|
|
112
134
|
sig do
|
|
@@ -123,7 +123,7 @@ module Dependabot
|
|
|
123
123
|
|
|
124
124
|
sig { returns(T.nilable(Dependabot::Swift::Requirement)) }
|
|
125
125
|
def dependency_requirement
|
|
126
|
-
req_string = dependency.requirements.first&.
|
|
126
|
+
req_string = dependency.requirements.first&.requirement_string
|
|
127
127
|
return nil unless req_string
|
|
128
128
|
|
|
129
129
|
Dependabot::Swift::Requirement.new(req_string)
|
|
@@ -133,7 +133,7 @@ module Dependabot
|
|
|
133
133
|
|
|
134
134
|
sig { returns(T.nilable(String)) }
|
|
135
135
|
def requirement_kind
|
|
136
|
-
dependency.requirements.first&.
|
|
136
|
+
dependency.requirements.first&.metadata_string("kind")
|
|
137
137
|
end
|
|
138
138
|
|
|
139
139
|
sig { params(version: Object).returns(T::Boolean) }
|
|
@@ -171,8 +171,8 @@ module Dependabot
|
|
|
171
171
|
sig { returns(T::Boolean) }
|
|
172
172
|
def package_resolved_requirement?
|
|
173
173
|
dependency.requirements.any? do |req|
|
|
174
|
-
file = req
|
|
175
|
-
file
|
|
174
|
+
file = req.file
|
|
175
|
+
file && XcodeFileHelpers.xcode_resolved_path?(file)
|
|
176
176
|
end
|
|
177
177
|
end
|
|
178
178
|
|
|
@@ -171,7 +171,10 @@ module Dependabot
|
|
|
171
171
|
Version.new(lowest_resolvable_security_fix_version)
|
|
172
172
|
end
|
|
173
173
|
|
|
174
|
-
sig
|
|
174
|
+
sig do
|
|
175
|
+
params(requirements: T::Array[Dependabot::DependencyRequirement])
|
|
176
|
+
.returns(VersionResolver)
|
|
177
|
+
end
|
|
175
178
|
def version_resolver_for(requirements)
|
|
176
179
|
VersionResolver.new(
|
|
177
180
|
dependency: dependency,
|
|
@@ -187,21 +190,24 @@ module Dependabot
|
|
|
187
190
|
git_commit_checker.local_tag_for_latest_version(update_cooldown)
|
|
188
191
|
end
|
|
189
192
|
|
|
190
|
-
sig { returns(T::Array[
|
|
193
|
+
sig { returns(T::Array[Dependabot::DependencyRequirement]) }
|
|
191
194
|
def unlocked_requirements
|
|
192
195
|
NativeRequirement.map_requirements(old_requirements) do |_old_requirement|
|
|
193
196
|
"\"#{dependency.version}\"...\"#{latest_version}\""
|
|
194
197
|
end
|
|
195
198
|
end
|
|
196
199
|
|
|
197
|
-
sig { returns(T::Array[
|
|
200
|
+
sig { returns(T::Array[Dependabot::DependencyRequirement]) }
|
|
198
201
|
def force_lowest_security_fix_requirements
|
|
199
202
|
NativeRequirement.map_requirements(old_requirements) do |_old_requirement|
|
|
200
203
|
"\"#{lowest_security_fix_version}\"...\"#{lowest_security_fix_version}\""
|
|
201
204
|
end
|
|
202
205
|
end
|
|
203
206
|
|
|
204
|
-
sig
|
|
207
|
+
sig do
|
|
208
|
+
params(new_requirements: T::Array[Dependabot::DependencyRequirement])
|
|
209
|
+
.returns(Dependabot::DependencyFile)
|
|
210
|
+
end
|
|
205
211
|
def prepare_manifest_for(new_requirements)
|
|
206
212
|
manifest_file = T.must(manifest)
|
|
207
213
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-swift
|
|
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
|
|
@@ -272,7 +272,7 @@ licenses:
|
|
|
272
272
|
- MIT
|
|
273
273
|
metadata:
|
|
274
274
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
275
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
275
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.392.0
|
|
276
276
|
rdoc_options: []
|
|
277
277
|
require_paths:
|
|
278
278
|
- lib
|