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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: faaaf97e126f67d75fa7d362243d9b18896acc160644be747c2fecd049df0eba
4
- data.tar.gz: 485cc758bcb0c2b23a5ac5807df0428c2058c0b95a8996aee8d865590707e80c
3
+ metadata.gz: 9587a3a768819d1a9f8f93c794a8fb6f207c7e11505a01ceed45c3ef1b625e2d
4
+ data.tar.gz: c86ce17c07e9d0ee74fb8acbcb8eb135a46eb066935cdee9cb1d90eb8a97671e
5
5
  SHA512:
6
- metadata.gz: 951aab093f91bc6c97c53565d82403db0399650b50f688c36492de9f9a6edf2b59b0d9488997a417ccaf26e9ec4eec7edfa2e520a6d363bf95631e391ceda328
7
- data.tar.gz: 5dee0b282414c288f3454208b69882a9378e44e2a6f390158a011eebc3fd9a0c31c510a9bfb86379395d5f439d7ba3947febc604ce904fa7681e571da737c4d9
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[:file] == filename }
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.fetch(:requirement),
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: strict
1
+ # typed: strong
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "sorbet-runtime"
@@ -1,4 +1,4 @@
1
- # typed: strict
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? { |f| f[:file] == file.name }
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[:file] == filename }
66
- &.fetch(:requirement)
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[:file] == filename }
71
- &.fetch(:requirement)
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[:file] == filename }
87
- &.dig(:source, :ref)
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[:file] == filename }
92
- &.dig(:source, :ref)
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
- info = dependency.requirements.filter_map { |r| r[:source] }.first
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: strict
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.fetch(:file) == filename }
99
- &.fetch(:requirement)
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.fetch(:file) == filename }
128
- &.fetch(:requirement)
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.filter_map { |r| r[:requirement] }
136
- .reject { |req_string| req_string.start_with?("<") }
137
- .select { |req_string| req_string.match?(version_regex) }
138
- .map { |req_string| req_string.match(version_regex) }
139
- .select { |version| version_class.correct?(version.to_s) }
140
- .max_by { |version| version_class.new(version.to_s) }
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.fetch(:file) == filename }
159
- &.dig(:source, :ref)
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[:requirement].match?(/\d-[A-Za-z0-9]/)
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[:file] == file_name }
232
+ dependency.requirements.any? { |r| r.file == file_name }
232
233
  end
233
234
  end
234
235
  end
@@ -1,4 +1,4 @@
1
- # typed: strict
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[:requirement]&.match?(/\d-[A-Za-z0-9]/)
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(T::Hash[Symbol, T.nilable(String)])
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(T::Hash[Symbol, T.nilable(String)])) }
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
- return req unless latest_resolvable_version && req[:requirement]
69
- return req if req_satisfied_by_latest_resolvable?(req[:requirement])
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 = req[:requirement].split(OR_SEPARATOR)
72
- last_string_reqs = or_string_reqs.last.split(AND_SEPARATOR)
73
- .map(&:strip)
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 = req[:requirement] + " or " + new_requirement if or_string_reqs.count > 1
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.dig(:source, :type) == "git"
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(T::Hash[T.untyped, T.untyped])) }
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 T.must(dependency_source_details).merge(ref: T.must(new_tag).fetch(:tag))
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(T::Hash[T.any(String, Symbol), T.untyped])) }
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.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
@@ -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.391.0
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