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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ecf967273053e6c62d8f9ec69dbf8107ff0e7720da9b82ee9bb30fbf467f4d05
4
- data.tar.gz: 7f701d0432112af31d360659a51be50726bdb1d40a5eda41716417a8ce075597
3
+ metadata.gz: c6a333247d7e23cf5e8864c7f83ace86688a723b74ef1a0c25211fddbbde92f9
4
+ data.tar.gz: d22ef8c29b754afb10ce11b98f8010da8a32c81803ce4a6e8122c3569827bd62
5
5
  SHA512:
6
- metadata.gz: 6559a6a5b51751081c2a2052872f59f1eaf47b264b3585218d5fedc825626de7360a841944c9227cda87b0e22d21ed6e6041e52a128ca661cb91dbb0c48a2cb2
7
- data.tar.gz: 1da30c2a26fde87da25fbbcc1ff5e5d378680f325bc3cad1d29fb383ba984f7dc9d7e76e3fee86ca9c96b8bf958c2e0fc2ef963e0410af60f66c4c17628b2dcc
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
- source: T::Hash[Symbol, String]
23
+ requirement: Dependabot::DependencyRequirement
23
24
  ).void
24
25
  end
25
- def initialize(manifest, source:)
26
+ def initialize(manifest, requirement:)
26
27
  @manifest = manifest
27
- @source = source
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) == source[:url]
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: 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(T::Hash[Symbol, String]) }
58
- attr_reader :source
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
- req.merge(
146
- requirement: requirement_str || req[:requirement],
147
- file: pbxproj_file,
148
- metadata: {
149
- # declaration_string is not applicable for Xcode-managed SPM
150
- # (no Package.swift manifest to extract it from)
151
- declaration_string: nil,
152
- requirement_string: requirement_string,
153
- kind: kind
154
- }.compact
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: strict
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
- source = T.must(dep.requirements.first)[:source]
55
+ requirement = T.must(dep.requirements.first)
56
56
 
57
- requirements = ManifestParser.new(T.must(package_manifest_file), source: source).requirements
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[T::Hash[Symbol, Object]],
18
- new_requirements: T::Array[T::Hash[Symbol, Object]]
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
- old_metadata = metadata(old)
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: string_value(old_metadata, :declaration_string),
38
- old_requirement: string_value(old_metadata, :requirement_string),
39
- new_requirement: string_value(new_metadata, :requirement_string)
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[T::Hash[Symbol, Object]]) }
50
+ sig { returns(T::Array[Dependabot::DependencyRequirement]) }
52
51
  attr_reader :old_requirements
53
52
 
54
- sig { returns(T::Array[T::Hash[Symbol, Object]]) }
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 = source&.dig(: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[:file])
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: strict
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 { |req| req[:file] } + (dep.previous_requirements || []).map { |req| req[:file] }
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
- type_parameters(:T)
21
- .params(
22
- requirements: T::Array[T::Hash[Symbol, Object]],
23
- _blk: T.proc.params(declaration: NativeRequirement).returns(String)
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[:metadata]
30
- next requirement unless metadata.is_a?(Hash)
29
+ metadata = requirement.metadata
30
+ next requirement unless metadata
31
31
 
32
- requirement_string = metadata[:requirement_string]
33
- next requirement unless requirement_string.is_a?(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
- requirement.merge(
41
- requirement: new_requirement.to_s,
42
- metadata: { requirement_string: new_declaration }
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: strict
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[:metadata] || {}
74
- requirement_string = metadata[:requirement_string]
75
- kind = metadata[: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[:source])
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: metadata.merge(
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
- updated_source = source.dup
107
- updated_source[:ref] = ref
108
- updated_source["ref"] = ref
109
- updated_source
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&.dig(:requirement)
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&.dig(:metadata, :kind)
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[:file]
175
- file.is_a?(String) && XcodeFileHelpers.xcode_resolved_path?(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 { params(requirements: T::Array[T::Hash[Symbol, Object]]).returns(VersionResolver) }
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[T::Hash[Symbol, Object]]) }
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[T::Hash[Symbol, Object]]) }
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 { params(new_requirements: T::Array[T::Hash[Symbol, Object]]).returns(Dependabot::DependencyFile) }
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.391.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.391.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.391.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.391.0
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