dependabot-common 0.244.0 → 0.246.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.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dependabot/clients/bitbucket.rb +113 -5
  3. data/lib/dependabot/clients/bitbucket_with_retries.rb +34 -10
  4. data/lib/dependabot/clients/codecommit.rb +107 -12
  5. data/lib/dependabot/clients/github_with_retries.rb +61 -19
  6. data/lib/dependabot/clients/gitlab_with_retries.rb +60 -7
  7. data/lib/dependabot/dependency.rb +1 -1
  8. data/lib/dependabot/errors.rb +8 -2
  9. data/lib/dependabot/git_commit_checker.rb +4 -3
  10. data/lib/dependabot/metadata_finders/base/changelog_finder.rb +1 -1
  11. data/lib/dependabot/metadata_finders/base/commits_finder.rb +1 -1
  12. data/lib/dependabot/metadata_finders/base/release_finder.rb +1 -1
  13. data/lib/dependabot/pull_request_creator/azure.rb +80 -9
  14. data/lib/dependabot/pull_request_creator/bitbucket.rb +73 -9
  15. data/lib/dependabot/pull_request_creator/codecommit.rb +96 -25
  16. data/lib/dependabot/pull_request_creator/github.rb +162 -49
  17. data/lib/dependabot/pull_request_creator/gitlab.rb +109 -21
  18. data/lib/dependabot/pull_request_creator/message_builder.rb +239 -89
  19. data/lib/dependabot/pull_request_creator/pr_name_prefixer.rb +11 -9
  20. data/lib/dependabot/pull_request_creator.rb +32 -27
  21. data/lib/dependabot/pull_request_updater/azure.rb +75 -11
  22. data/lib/dependabot/pull_request_updater/github.rb +89 -28
  23. data/lib/dependabot/pull_request_updater/gitlab.rb +61 -12
  24. data/lib/dependabot/pull_request_updater.rb +1 -1
  25. data/lib/dependabot/shared_helpers.rb +19 -1
  26. data/lib/dependabot/update_checkers/base.rb +121 -31
  27. data/lib/dependabot.rb +1 -1
  28. metadata +3 -3
@@ -1,16 +1,51 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
+ require "gitlab"
5
+ require "sorbet-runtime"
6
+
4
7
  require "dependabot/clients/gitlab_with_retries"
8
+ require "dependabot/credential"
5
9
  require "dependabot/pull_request_creator"
6
- require "gitlab"
7
10
 
8
11
  module Dependabot
9
12
  class PullRequestUpdater
10
13
  class Gitlab
11
- attr_reader :source, :files, :base_commit, :old_commit, :credentials,
12
- :pull_request_number, :target_project_id
14
+ extend T::Sig
15
+
16
+ sig { returns(Dependabot::Source) }
17
+ attr_reader :source
18
+
19
+ sig { returns(T::Array[Dependabot::DependencyFile]) }
20
+ attr_reader :files
21
+
22
+ sig { returns(String) }
23
+ attr_reader :base_commit
13
24
 
25
+ sig { returns(String) }
26
+ attr_reader :old_commit
27
+
28
+ sig { returns(T::Array[Dependabot::Credential]) }
29
+ attr_reader :credentials
30
+
31
+ sig { returns(Integer) }
32
+ attr_reader :pull_request_number
33
+
34
+ sig { returns(T.nilable(Integer)) }
35
+ attr_reader :target_project_id
36
+
37
+ sig do
38
+ params(
39
+ source: Dependabot::Source,
40
+ base_commit: String,
41
+ old_commit: String,
42
+ files: T::Array[Dependabot::DependencyFile],
43
+ credentials: T::Array[Dependabot::Credential],
44
+ pull_request_number: Integer,
45
+ target_project_id: T.nilable(Integer)
46
+ )
47
+ .void
48
+ end
14
49
  def initialize(source:, base_commit:, old_commit:, files:,
15
50
  credentials:, pull_request_number:, target_project_id:)
16
51
  @source = source
@@ -22,6 +57,7 @@ module Dependabot
22
57
  @target_project_id = target_project_id
23
58
  end
24
59
 
60
+ sig { returns(T.nilable(String)) }
25
61
  def update
26
62
  return unless merge_request_exists?
27
63
  return unless branch_exists?(merge_request.source_branch)
@@ -32,6 +68,7 @@ module Dependabot
32
68
 
33
69
  private
34
70
 
71
+ sig { returns(T::Boolean) }
35
72
  def merge_request_exists?
36
73
  merge_request
37
74
  true
@@ -39,31 +76,43 @@ module Dependabot
39
76
  false
40
77
  end
41
78
 
79
+ sig { returns(T.untyped) }
42
80
  def merge_request
43
- @merge_request ||= gitlab_client_for_source.merge_request(
44
- target_project_id || source.repo,
45
- pull_request_number
81
+ @merge_request ||= T.let(
82
+ T.unsafe(gitlab_client_for_source).merge_request(
83
+ target_project_id || source.repo,
84
+ pull_request_number
85
+ ),
86
+ T.untyped
46
87
  )
47
88
  end
48
89
 
90
+ sig { returns(Dependabot::Clients::GitlabWithRetries) }
49
91
  def gitlab_client_for_source
50
92
  @gitlab_client_for_source ||=
51
- Dependabot::Clients::GitlabWithRetries.for_source(
52
- source: source,
53
- credentials: credentials
93
+ T.let(
94
+ Dependabot::Clients::GitlabWithRetries.for_source(
95
+ source: source,
96
+ credentials: credentials
97
+ ),
98
+ T.nilable(Dependabot::Clients::GitlabWithRetries)
54
99
  )
55
100
  end
56
101
 
102
+ sig { params(name: String).returns(T::Boolean) }
57
103
  def branch_exists?(name)
58
- gitlab_client_for_source.branch(source.repo, name)
104
+ !T.unsafe(gitlab_client_for_source).branch(source.repo, name).nil?
59
105
  rescue ::Gitlab::Error::NotFound
60
106
  false
61
107
  end
62
108
 
109
+ # TODO: This needs to be typed when the underlying client is
110
+ sig { returns(T.untyped) }
63
111
  def commit_being_updated
64
- gitlab_client_for_source.commit(source.repo, old_commit)
112
+ T.unsafe(gitlab_client_for_source).commit(source.repo, old_commit)
65
113
  end
66
114
 
115
+ sig { void }
67
116
  def create_commit
68
117
  gitlab_client_for_source.create_commit(
69
118
  source.repo,
@@ -106,7 +106,7 @@ module Dependabot
106
106
  files: files,
107
107
  credentials: credentials,
108
108
  pull_request_number: pull_request_number,
109
- target_project_id: provider_metadata[:target_project_id]
109
+ target_project_id: T.cast(provider_metadata[:target_project_id], T.nilable(Integer))
110
110
  )
111
111
  end
112
112
 
@@ -405,7 +405,6 @@ module Dependabot
405
405
  stderr_to_stdout: true)
406
406
  start = Time.now
407
407
  cmd = allow_unsafe_shell_command ? command : escape_command(command)
408
-
409
408
  if stderr_to_stdout
410
409
  stdout, process = Open3.capture2e(env || {}, cmd)
411
410
  else
@@ -425,12 +424,31 @@ module Dependabot
425
424
  process_exit_value: process.to_s
426
425
  }
427
426
 
427
+ check_out_of_disk_memory_error(stderr, error_context)
428
+
428
429
  raise SharedHelpers::HelperSubprocessFailed.new(
429
430
  message: stderr_to_stdout ? stdout : "#{stderr}\n#{stdout}",
430
431
  error_context: error_context
431
432
  )
432
433
  end
433
434
 
435
+ sig { params(stderr: T.nilable(String), error_context: T::Hash[Symbol, String]).void }
436
+ def self.check_out_of_disk_memory_error(stderr, error_context)
437
+ if stderr&.include?("No space left on device") || stderr&.include?("Out of diskspace")
438
+ raise HelperSubprocessFailed.new(
439
+ message: "No space left on device",
440
+ error_class: "Dependabot::OutOfDisk",
441
+ error_context: error_context
442
+ )
443
+ elsif stderr&.include?("MemoryError")
444
+ raise HelperSubprocessFailed.new(
445
+ message: "MemoryError",
446
+ error_class: "Dependabot::OutOfMemory",
447
+ error_context: error_context
448
+ )
449
+ end
450
+ end
451
+
434
452
  sig { params(command: String, stdin_data: String, env: T.nilable(T::Hash[String, String])).returns(String) }
435
453
  def self.helper_subprocess_bash_command(command:, stdin_data:, env:)
436
454
  escaped_stdin_data = stdin_data.gsub("\"", "\\\"")
@@ -1,20 +1,65 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "json"
5
+ require "sorbet-runtime"
6
+
5
7
  require "dependabot/utils"
6
8
  require "dependabot/security_advisory"
7
9
 
8
10
  module Dependabot
9
11
  module UpdateCheckers
10
12
  class Base
11
- attr_reader :dependency, :dependency_files, :repo_contents_path,
12
- :credentials, :ignored_versions, :raise_on_ignored,
13
- :security_advisories, :requirements_update_strategy,
14
- :dependency_group, :options
13
+ extend T::Sig
14
+ extend T::Helpers
15
+
16
+ sig { returns(Dependabot::Dependency) }
17
+ attr_reader :dependency
18
+
19
+ sig { returns(T::Array[Dependabot::DependencyFile]) }
20
+ attr_reader :dependency_files
21
+
22
+ sig { returns(T.nilable(String)) }
23
+ attr_reader :repo_contents_path
24
+
25
+ sig { returns(T::Array[Dependabot::Credential]) }
26
+ attr_reader :credentials
27
+
28
+ sig { returns(T::Array[String]) }
29
+ attr_reader :ignored_versions
30
+
31
+ sig { returns(T::Boolean) }
32
+ attr_reader :raise_on_ignored
33
+
34
+ sig { returns(T::Array[Dependabot::SecurityAdvisory]) }
35
+ attr_reader :security_advisories
36
+
37
+ sig { returns(T.nilable(Symbol)) }
38
+ attr_reader :requirements_update_strategy
39
+
40
+ sig { returns(T.nilable(Dependabot::DependencyGroup)) }
41
+ attr_reader :dependency_group
42
+
43
+ sig { returns(T::Hash[Symbol, T.untyped]) }
44
+ attr_reader :options
15
45
 
16
- def initialize(dependency:, dependency_files:, repo_contents_path: nil,
17
- credentials:, ignored_versions: [],
46
+ sig do
47
+ params(
48
+ dependency: Dependabot::Dependency,
49
+ dependency_files: T::Array[Dependabot::DependencyFile],
50
+ credentials: T::Array[Dependabot::Credential],
51
+ repo_contents_path: T.nilable(String),
52
+ ignored_versions: T::Array[String],
53
+ raise_on_ignored: T::Boolean,
54
+ security_advisories: T::Array[Dependabot::SecurityAdvisory],
55
+ requirements_update_strategy: T.nilable(Symbol),
56
+ dependency_group: T.nilable(Dependabot::DependencyGroup),
57
+ options: T::Hash[Symbol, T.untyped]
58
+ )
59
+ .void
60
+ end
61
+ def initialize(dependency:, dependency_files:, credentials:,
62
+ repo_contents_path: nil, ignored_versions: [],
18
63
  raise_on_ignored: false, security_advisories: [],
19
64
  requirements_update_strategy: nil, dependency_group: nil,
20
65
  options: {})
@@ -30,6 +75,7 @@ module Dependabot
30
75
  @options = options
31
76
  end
32
77
 
78
+ sig { returns(T::Boolean) }
33
79
  def up_to_date?
34
80
  if dependency.version
35
81
  version_up_to_date?
@@ -38,6 +84,7 @@ module Dependabot
38
84
  end
39
85
  end
40
86
 
87
+ sig { params(requirements_to_unlock: T.nilable(Symbol)).returns(T::Boolean) }
41
88
  def can_update?(requirements_to_unlock:)
42
89
  # Can't update if all versions are being ignored
43
90
  return false if ignore_requirements.include?(requirement_class.new(">= 0"))
@@ -52,6 +99,7 @@ module Dependabot
52
99
  end
53
100
  end
54
101
 
102
+ sig { params(requirements_to_unlock: T.nilable(Symbol)).returns(T::Array[Dependabot::Dependency]) }
55
103
  def updated_dependencies(requirements_to_unlock:)
56
104
  return [] unless can_update?(requirements_to_unlock: requirements_to_unlock)
57
105
 
@@ -63,10 +111,12 @@ module Dependabot
63
111
  end
64
112
  end
65
113
 
114
+ sig { overridable.returns(T.nilable(T.any(String, Gem::Version))) }
66
115
  def latest_version
67
- raise NotImplementedError
116
+ raise NotImplementedError, "#{self.class} must implement #latest_version"
68
117
  end
69
118
 
119
+ sig { overridable.returns(T.nilable(T.any(String, Gem::Version))) }
70
120
  def preferred_resolvable_version
71
121
  # If this dependency is vulnerable, prefer trying to update to the
72
122
  # lowest_resolvable_security_fix_version. Otherwise update all the way
@@ -78,22 +128,26 @@ module Dependabot
78
128
  latest_resolvable_version
79
129
  end
80
130
 
131
+ sig { overridable.returns(T.nilable(T.any(String, Gem::Version))) }
81
132
  def latest_resolvable_version
82
- raise NotImplementedError
133
+ raise NotImplementedError, "#{self.class} must implement #latest_resolvable_version"
83
134
  end
84
135
 
85
136
  # Lowest available security fix version not checking resolvability
86
137
  # @return [Dependabot::<package manager>::Version, #to_s] version class
138
+ sig { overridable.returns(Dependabot::Version) }
87
139
  def lowest_security_fix_version
88
- raise NotImplementedError
140
+ raise NotImplementedError, "#{self.class} must implement #lowest_security_fix_version"
89
141
  end
90
142
 
143
+ sig { overridable.returns(String) }
91
144
  def lowest_resolvable_security_fix_version
92
- raise NotImplementedError
145
+ raise NotImplementedError, "#{self.class} must implement #lowest_resolvable_security_fix_version"
93
146
  end
94
147
 
148
+ sig { overridable.returns(T.nilable(T.any(String, Dependabot::Version))) }
95
149
  def latest_resolvable_version_with_no_unlock
96
- raise NotImplementedError
150
+ raise NotImplementedError, "#{self.class} must implement #latest_resolvable_version_with_no_unlock"
97
151
  end
98
152
 
99
153
  # Finds any dependencies in the lockfile that have a subdependency on the
@@ -102,22 +156,27 @@ module Dependabot
102
156
  # name [String] the blocking dependencies name
103
157
  # version [String] the version of the blocking dependency
104
158
  # requirement [String] the requirement on the target_dependency
159
+ sig { overridable.returns(T::Array[T::Hash[String, String]]) }
105
160
  def conflicting_dependencies
106
161
  [] # return an empty array for ecosystems that don't support this yet
107
162
  end
108
163
 
164
+ sig { params(_updated_version: String).returns(T.nilable(String)) }
109
165
  def latest_resolvable_previous_version(_updated_version)
110
166
  dependency.version
111
167
  end
112
168
 
169
+ sig { overridable.returns(T::Array[T::Hash[Symbol, T.untyped]]) }
113
170
  def updated_requirements
114
171
  raise NotImplementedError
115
172
  end
116
173
 
174
+ sig { returns(T.class_of(Dependabot::Version)) }
117
175
  def version_class
118
176
  dependency.version_class
119
177
  end
120
178
 
179
+ sig { returns(T.class_of(Dependabot::Requirement)) }
121
180
  def requirement_class
122
181
  dependency.requirement_class
123
182
  end
@@ -125,10 +184,12 @@ module Dependabot
125
184
  # For some languages, the manifest file may be constructed such that
126
185
  # Dependabot has no way to update it (e.g., if it fetches its versions
127
186
  # from a web API). This method is overridden in those cases.
187
+ sig { returns(T::Boolean) }
128
188
  def requirements_unlocked_or_can_be?
129
189
  true
130
190
  end
131
191
 
192
+ sig { returns(T::Boolean) }
132
193
  def vulnerable?
133
194
  return false if security_advisories.none?
134
195
 
@@ -142,20 +203,24 @@ module Dependabot
142
203
  active_advisories.any?
143
204
  end
144
205
 
206
+ sig { returns(T::Array[Dependabot::Requirement]) }
145
207
  def ignore_requirements
146
208
  ignored_versions.flat_map { |req| requirement_class.requirements_array(req) }
147
209
  end
148
210
 
149
211
  private
150
212
 
213
+ sig { returns(T::Array[Dependabot::SecurityAdvisory]) }
151
214
  def active_advisories
152
- security_advisories.select { |a| a.vulnerable?(current_version) }
215
+ security_advisories.select { |a| a.vulnerable?(T.must(current_version)) }
153
216
  end
154
217
 
218
+ sig { overridable.returns(T::Boolean) }
155
219
  def latest_version_resolvable_with_full_unlock?
156
- raise NotImplementedError
220
+ raise NotImplementedError, "#{self.class} must implement #latest_version_resolvable_with_full_unlock?"
157
221
  end
158
222
 
223
+ sig { returns(Dependabot::Dependency) }
159
224
  def updated_dependency_without_unlock
160
225
  version = latest_resolvable_version_with_no_unlock.to_s
161
226
  previous_version = latest_resolvable_previous_version(version)&.to_s
@@ -172,6 +237,7 @@ module Dependabot
172
237
  )
173
238
  end
174
239
 
240
+ sig { returns(Dependabot::Dependency) }
175
241
  def updated_dependency_with_own_req_unlock
176
242
  version = preferred_resolvable_version.to_s
177
243
  previous_version = latest_resolvable_previous_version(version)&.to_s
@@ -188,16 +254,19 @@ module Dependabot
188
254
  )
189
255
  end
190
256
 
257
+ sig { overridable.returns(T::Array[Dependabot::Dependency]) }
191
258
  def updated_dependencies_after_full_unlock
192
259
  raise NotImplementedError
193
260
  end
194
261
 
262
+ sig { returns(T::Boolean) }
195
263
  def version_up_to_date?
196
264
  return sha1_version_up_to_date? if existing_version_is_sha?
197
265
 
198
266
  numeric_version_up_to_date?
199
267
  end
200
268
 
269
+ sig { params(requirements_to_unlock: T.nilable(Symbol)).returns(T::Boolean) }
201
270
  def version_can_update?(requirements_to_unlock:)
202
271
  if existing_version_is_sha?
203
272
  return sha1_version_can_update?(
@@ -210,16 +279,19 @@ module Dependabot
210
279
  )
211
280
  end
212
281
 
282
+ sig { returns(T::Boolean) }
213
283
  def existing_version_is_sha?
214
284
  return false if version_class.correct?(dependency.version)
215
285
 
216
- dependency.version.match?(/^[0-9a-f]{6,}$/)
286
+ T.must(dependency.version).match?(/^[0-9a-f]{6,}$/)
217
287
  end
218
288
 
289
+ sig { returns(T::Boolean) }
219
290
  def sha1_version_up_to_date?
220
- latest_version&.to_s&.start_with?(dependency.version)
291
+ latest_version&.to_s&.start_with?(T.must(dependency.version)) || false
221
292
  end
222
293
 
294
+ sig { params(requirements_to_unlock: T.nilable(Symbol)).returns(T::Boolean) }
223
295
  def sha1_version_can_update?(requirements_to_unlock:)
224
296
  return false if sha1_version_up_to_date?
225
297
 
@@ -227,7 +299,7 @@ module Dependabot
227
299
  case requirements_to_unlock&.to_sym
228
300
  when :none
229
301
  new_version = latest_resolvable_version_with_no_unlock
230
- new_version && !new_version.to_s.start_with?(dependency.version)
302
+ !new_version&.to_s&.start_with?(T.must(dependency.version))
231
303
  when :own
232
304
  preferred_version_resolvable_with_unlock?
233
305
  when :all
@@ -236,6 +308,7 @@ module Dependabot
236
308
  end
237
309
  end
238
310
 
311
+ sig { returns(T::Boolean) }
239
312
  def numeric_version_up_to_date?
240
313
  return false unless latest_version
241
314
 
@@ -244,16 +317,19 @@ module Dependabot
244
317
  # this case we treat the version as up-to-date so that it's ignored.
245
318
  return true if latest_version.to_s.match?(/^[0-9a-f]{40}$/)
246
319
 
247
- latest_version <= current_version
320
+ T.must(latest_version) <= current_version
248
321
  end
249
322
 
323
+ sig { params(requirements_to_unlock: T.nilable(Symbol)).returns(T::Boolean) }
250
324
  def numeric_version_can_update?(requirements_to_unlock:)
251
325
  return false if numeric_version_up_to_date?
252
326
 
253
327
  case requirements_to_unlock&.to_sym
254
328
  when :none
255
329
  new_version = latest_resolvable_version_with_no_unlock
256
- new_version && new_version > current_version
330
+ return false unless new_version
331
+
332
+ new_version > current_version
257
333
  when :own
258
334
  preferred_version_resolvable_with_unlock?
259
335
  when :all
@@ -262,12 +338,13 @@ module Dependabot
262
338
  end
263
339
  end
264
340
 
341
+ sig { returns(T::Boolean) }
265
342
  def preferred_version_resolvable_with_unlock?
266
343
  new_version = preferred_resolvable_version
267
344
  return false unless new_version
268
345
 
269
346
  if existing_version_is_sha?
270
- return false if new_version.to_s.start_with?(dependency.version)
347
+ return false if new_version.to_s.start_with?(T.must(dependency.version))
271
348
  elsif new_version <= current_version
272
349
  return false
273
350
  end
@@ -275,39 +352,52 @@ module Dependabot
275
352
  updated_requirements.none? { |r| r[:requirement] == :unfixable }
276
353
  end
277
354
 
355
+ sig { returns(T::Boolean) }
278
356
  def requirements_up_to_date?
279
357
  if can_compare_requirements?
280
- return (version_from_requirements >=
281
- version_class.new(latest_version.to_s))
358
+ return (T.must(version_from_requirements) >= version_class.new(latest_version.to_s))
282
359
  end
283
360
 
284
361
  changed_requirements.none?
285
362
  end
286
363
 
364
+ # TODO: Should this return Dependabot::Version?
365
+ sig { returns(T.nilable(Gem::Version)) }
287
366
  def current_version
288
- @current_version ||= dependency.numeric_version
367
+ @current_version ||=
368
+ T.let(
369
+ dependency.numeric_version,
370
+ T.nilable(Dependabot::Version)
371
+ )
289
372
  end
290
373
 
374
+ sig { returns(T::Boolean) }
291
375
  def can_compare_requirements?
292
- version_from_requirements &&
376
+ (version_from_requirements &&
293
377
  latest_version &&
294
- version_class.correct?(latest_version.to_s)
378
+ version_class.correct?(latest_version.to_s)) || false
295
379
  end
296
380
 
381
+ sig { returns(T::Array[T::Hash[Symbol, T.untyped]]) }
297
382
  def changed_requirements
298
383
  (updated_requirements - dependency.requirements)
299
384
  end
300
385
 
386
+ sig { returns(T.nilable(T.any(String, Gem::Version))) }
301
387
  def version_from_requirements
302
388
  @version_from_requirements ||=
303
- dependency.requirements.filter_map { |r| r.fetch(:requirement) }
304
- .flat_map { |req_str| requirement_class.requirements_array(req_str) }
305
- .flat_map(&:requirements)
306
- .reject { |req_array| req_array.first.start_with?("<") }
307
- .map(&:last)
308
- .max
389
+ T.let(
390
+ dependency.requirements.filter_map { |r| r.fetch(:requirement) }
391
+ .flat_map { |req_str| requirement_class.requirements_array(req_str) }
392
+ .flat_map(&:requirements)
393
+ .reject { |req_array| req_array.first.start_with?("<") }
394
+ .map(&:last)
395
+ .max,
396
+ T.nilable(T.any(String, Gem::Version))
397
+ )
309
398
  end
310
399
 
400
+ sig { returns(T::Boolean) }
311
401
  def requirements_can_update?
312
402
  return false if changed_requirements.none?
313
403
 
data/lib/dependabot.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Dependabot
5
- VERSION = "0.244.0"
5
+ VERSION = "0.246.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.244.0
4
+ version: 0.246.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-15 00:00:00.000000000 Z
11
+ date: 2024-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-codecommit
@@ -567,7 +567,7 @@ licenses:
567
567
  - Nonstandard
568
568
  metadata:
569
569
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
570
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.244.0
570
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.246.0
571
571
  post_install_message:
572
572
  rdoc_options: []
573
573
  require_paths: