dependabot-common 0.230.0 → 0.231.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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dependabot/clients/azure.rb +4 -3
  3. data/lib/dependabot/clients/bitbucket.rb +4 -3
  4. data/lib/dependabot/clients/bitbucket_with_retries.rb +4 -3
  5. data/lib/dependabot/clients/codecommit.rb +6 -5
  6. data/lib/dependabot/clients/github_with_retries.rb +11 -10
  7. data/lib/dependabot/clients/gitlab_with_retries.rb +11 -10
  8. data/lib/dependabot/config/file.rb +1 -0
  9. data/lib/dependabot/config/file_fetcher.rb +1 -0
  10. data/lib/dependabot/config/ignore_condition.rb +1 -0
  11. data/lib/dependabot/config/update_config.rb +10 -9
  12. data/lib/dependabot/config.rb +1 -0
  13. data/lib/dependabot/dependency.rb +11 -10
  14. data/lib/dependabot/dependency_file.rb +1 -0
  15. data/lib/dependabot/dependency_group.rb +1 -0
  16. data/lib/dependabot/errors.rb +1 -0
  17. data/lib/dependabot/experiments.rb +1 -0
  18. data/lib/dependabot/file_fetchers/base.rb +27 -26
  19. data/lib/dependabot/file_fetchers.rb +1 -0
  20. data/lib/dependabot/file_parsers/base/dependency_set.rb +1 -0
  21. data/lib/dependabot/file_parsers/base.rb +1 -0
  22. data/lib/dependabot/file_parsers.rb +1 -0
  23. data/lib/dependabot/file_updaters/artifact_updater.rb +1 -0
  24. data/lib/dependabot/file_updaters/base.rb +1 -0
  25. data/lib/dependabot/file_updaters/vendor_updater.rb +1 -0
  26. data/lib/dependabot/file_updaters.rb +1 -0
  27. data/lib/dependabot/git_commit_checker.rb +22 -21
  28. data/lib/dependabot/git_metadata_fetcher.rb +13 -12
  29. data/lib/dependabot/logger.rb +1 -0
  30. data/lib/dependabot/metadata_finders/base/changelog_finder.rb +26 -25
  31. data/lib/dependabot/metadata_finders/base/changelog_pruner.rb +2 -1
  32. data/lib/dependabot/metadata_finders/base/commits_finder.rb +44 -43
  33. data/lib/dependabot/metadata_finders/base/release_finder.rb +25 -24
  34. data/lib/dependabot/metadata_finders/base.rb +3 -2
  35. data/lib/dependabot/metadata_finders.rb +1 -0
  36. data/lib/dependabot/pull_request_creator/azure.rb +1 -0
  37. data/lib/dependabot/pull_request_creator/bitbucket.rb +1 -0
  38. data/lib/dependabot/pull_request_creator/branch_namer/base.rb +1 -0
  39. data/lib/dependabot/pull_request_creator/branch_namer/dependency_group_strategy.rb +1 -0
  40. data/lib/dependabot/pull_request_creator/branch_namer/solo_strategy.rb +36 -35
  41. data/lib/dependabot/pull_request_creator/branch_namer.rb +1 -0
  42. data/lib/dependabot/pull_request_creator/codecommit.rb +3 -2
  43. data/lib/dependabot/pull_request_creator/commit_signer.rb +1 -0
  44. data/lib/dependabot/pull_request_creator/github.rb +23 -27
  45. data/lib/dependabot/pull_request_creator/gitlab.rb +1 -0
  46. data/lib/dependabot/pull_request_creator/labeler.rb +18 -17
  47. data/lib/dependabot/pull_request_creator/message.rb +1 -0
  48. data/lib/dependabot/pull_request_creator/message_builder/issue_linker.rb +8 -7
  49. data/lib/dependabot/pull_request_creator/message_builder/link_and_mention_sanitizer.rb +1 -0
  50. data/lib/dependabot/pull_request_creator/message_builder/metadata_presenter.rb +7 -6
  51. data/lib/dependabot/pull_request_creator/message_builder.rb +18 -17
  52. data/lib/dependabot/pull_request_creator/pr_name_prefixer.rb +61 -60
  53. data/lib/dependabot/pull_request_creator.rb +7 -0
  54. data/lib/dependabot/pull_request_updater/azure.rb +1 -0
  55. data/lib/dependabot/pull_request_updater/github.rb +5 -4
  56. data/lib/dependabot/pull_request_updater/gitlab.rb +1 -0
  57. data/lib/dependabot/pull_request_updater.rb +1 -0
  58. data/lib/dependabot/registry_client.rb +1 -0
  59. data/lib/dependabot/security_advisory.rb +5 -4
  60. data/lib/dependabot/shared_helpers.rb +5 -4
  61. data/lib/dependabot/simple_instrumentor.rb +1 -0
  62. data/lib/dependabot/source.rb +5 -4
  63. data/lib/dependabot/update_checkers/base.rb +7 -6
  64. data/lib/dependabot/update_checkers/version_filters.rb +1 -0
  65. data/lib/dependabot/update_checkers.rb +1 -0
  66. data/lib/dependabot/utils.rb +1 -0
  67. data/lib/dependabot/version.rb +1 -0
  68. data/lib/dependabot/workspace/base.rb +1 -0
  69. data/lib/dependabot/workspace/change_attempt.rb +1 -0
  70. data/lib/dependabot/workspace/git.rb +1 -0
  71. data/lib/dependabot/workspace.rb +1 -0
  72. data/lib/dependabot.rb +2 -1
  73. data/lib/wildcard_matcher.rb +4 -3
  74. metadata +31 -3
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "octokit"
@@ -42,8 +43,12 @@ module Dependabot
42
43
  end
43
44
 
44
45
  def create
45
- return if branch_exists?(branch_name) && unmerged_pull_request_exists?
46
- return if require_up_to_date_base? && !base_commit_is_up_to_date?
46
+ if branch_exists?(branch_name) && unmerged_pull_request_exists?
47
+ raise UnmergedPRExists, "PR ##{unmerged_pull_requests.first.id} already exists"
48
+ end
49
+ if require_up_to_date_base? && !base_commit_is_up_to_date?
50
+ raise BaseCommitNotUpToDate, "HEAD #{head_commit} does not match base #{base_commit}"
51
+ end
47
52
 
48
53
  create_annotated_pull_request
49
54
  rescue AnnotationError, Octokit::Error => e
@@ -75,7 +80,11 @@ module Dependabot
75
80
  # rubocop:enable Metrics/PerceivedComplexity
76
81
 
77
82
  def unmerged_pull_request_exists?
78
- pull_requests_for_branch.reject(&:merged).any?
83
+ unmerged_pull_requests.any?
84
+ end
85
+
86
+ def unmerged_pull_requests
87
+ pull_requests_for_branch.reject(&:merged)
79
88
  end
80
89
 
81
90
  def pull_requests_for_branch
@@ -105,16 +114,20 @@ module Dependabot
105
114
  end
106
115
 
107
116
  def base_commit_is_up_to_date?
108
- git_metadata_fetcher.head_commit_for_ref(target_branch) == base_commit
117
+ head_commit == base_commit
118
+ end
119
+
120
+ def head_commit
121
+ @head_commit ||= git_metadata_fetcher.head_commit_for_ref(target_branch)
109
122
  end
110
123
 
111
124
  def create_annotated_pull_request
112
125
  commit = create_commit
113
126
  branch = create_or_update_branch(commit)
114
- return unless branch
127
+ raise UnexpectedError, "Branch not created" unless branch
115
128
 
116
129
  pull_request = create_pull_request
117
- return unless pull_request
130
+ raise UnexpectedError, "PR not created" unless pull_request
118
131
 
119
132
  begin
120
133
  annotate_pull_request(pull_request)
@@ -219,10 +232,7 @@ module Dependabot
219
232
  # A race condition may cause GitHub to fail here, in which case we retry
220
233
  retry_count ||= 0
221
234
  retry_count += 1
222
- if retry_count > 10
223
- raise "Repeatedly failed to create or update branch #{branch_name} " \
224
- "with commit #{commit.sha}."
225
- end
235
+ raise if retry_count > 10
226
236
 
227
237
  sleep(rand(1..1.99))
228
238
  retry
@@ -303,8 +313,8 @@ module Dependabot
303
313
  reviewers.keys.to_h { |k| [k.to_sym, reviewers[k]] }
304
314
  reviewers = []
305
315
  reviewers += reviewers_hash[:reviewers] || []
306
- reviewers += (reviewers_hash[:team_reviewers] || []).
307
- map { |rv| "#{source.repo.split('/').first}/#{rv}" }
316
+ reviewers += (reviewers_hash[:team_reviewers] || [])
317
+ .map { |rv| "#{source.repo.split('/').first}/#{rv}" }
308
318
 
309
319
  reviewers_string =
310
320
  if reviewers.count == 1
@@ -358,9 +368,7 @@ module Dependabot
358
368
  pr_description,
359
369
  headers: custom_headers || {}
360
370
  )
361
- rescue Octokit::UnprocessableEntity => e
362
- return handle_pr_creation_error(e) if e.message.include? "Error summary"
363
-
371
+ rescue Octokit::UnprocessableEntity
364
372
  # Sometimes PR creation fails with no details (presumably because the
365
373
  # details are internal). It doesn't hurt to retry in these cases, in
366
374
  # case the cause is a race.
@@ -371,18 +379,6 @@ module Dependabot
371
379
  retry
372
380
  end
373
381
 
374
- def handle_pr_creation_error(error)
375
- # Ignore races that we lose
376
- return if error.message.include?("pull request already exists")
377
-
378
- # Ignore cases where the target branch has been deleted
379
- return if error.message.include?("field: base") &&
380
- source.branch &&
381
- !branch_exists?(source.branch)
382
-
383
- raise
384
- end
385
-
386
382
  def target_branch
387
383
  source.branch || default_branch
388
384
  end
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/clients/gitlab_with_retries"
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "octokit"
@@ -137,8 +138,8 @@ module Dependabot
137
138
  version_str = dep.previous_version
138
139
  return version_str if version_class.correct?(version_str)
139
140
 
140
- source = dep.previous_requirements.
141
- find { |r| r.fetch(:source) }&.fetch(:source)
141
+ source = dep.previous_requirements
142
+ .find { |r| r.fetch(:source) }&.fetch(:source)
142
143
  type = source&.fetch("type", nil) || source&.fetch(:type)
143
144
  return version_str unless type == "git"
144
145
 
@@ -233,8 +234,8 @@ module Dependabot
233
234
 
234
235
  def language_label
235
236
  label_name =
236
- self.class.label_details_for_package_manager(package_manager).
237
- fetch(:name)
237
+ self.class.label_details_for_package_manager(package_manager)
238
+ .fetch(:name)
238
239
  labels.find { |l| l.casecmp(label_name).zero? }
239
240
  end
240
241
 
@@ -252,9 +253,9 @@ module Dependabot
252
253
  client = github_client_for_source
253
254
 
254
255
  labels =
255
- client.
256
- labels(source.repo, per_page: 100).
257
- map(&:name)
256
+ client
257
+ .labels(source.repo, per_page: 100)
258
+ .map(&:name)
258
259
 
259
260
  next_link = client.last_response.rels[:next]
260
261
 
@@ -268,16 +269,16 @@ module Dependabot
268
269
  end
269
270
 
270
271
  def fetch_gitlab_labels
271
- gitlab_client_for_source.
272
- labels(source.repo, per_page: 100).
273
- auto_paginate.
274
- map(&:name)
272
+ gitlab_client_for_source
273
+ .labels(source.repo, per_page: 100)
274
+ .auto_paginate
275
+ .map(&:name)
275
276
  end
276
277
 
277
278
  def fetch_azure_labels
278
279
  language_name =
279
- self.class.label_details_for_package_manager(package_manager).
280
- fetch(:name)
280
+ self.class.label_details_for_package_manager(package_manager)
281
+ .fetch(:name)
281
282
 
282
283
  @labels = [
283
284
  *@labels,
@@ -379,13 +380,13 @@ module Dependabot
379
380
 
380
381
  def create_gitlab_language_label
381
382
  language_name =
382
- self.class.label_details_for_package_manager(package_manager).
383
- fetch(:name)
383
+ self.class.label_details_for_package_manager(package_manager)
384
+ .fetch(:name)
384
385
  gitlab_client_for_source.create_label(
385
386
  source.repo,
386
387
  language_name,
387
- "#" + self.class.label_details_for_package_manager(package_manager).
388
- fetch(:colour)
388
+ "#" + self.class.label_details_for_package_manager(package_manager)
389
+ .fetch(:colour)
389
390
  )
390
391
  @labels = [*@labels, language_name].uniq
391
392
  end
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Dependabot
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/pull_request_creator/message_builder"
@@ -28,15 +29,15 @@ module Dependabot
28
29
  # of them with an absolute link that uses the source URL
29
30
  ISSUE_LINK_REGEXS.reduce(text) do |updated_text, regex|
30
31
  updated_text.gsub(regex) do |issue_link|
31
- tag = issue_link.
32
- match(/(?<tag>(?:\#|GH-)?\d+)/i).
33
- named_captures.fetch("tag")
32
+ tag = issue_link
33
+ .match(/(?<tag>(?:\#|GH-)?\d+)/i)
34
+ .named_captures.fetch("tag")
34
35
  number = tag.match(/\d+/).to_s
35
36
 
36
- repo = issue_link.
37
- match("#{REPO_REGEX}#{TAG_REGEX}")&.
38
- named_captures&.
39
- fetch("repo", nil)
37
+ repo = issue_link
38
+ .match("#{REPO_REGEX}#{TAG_REGEX}")
39
+ &.named_captures
40
+ &.fetch("repo", nil)
40
41
  source = repo ? "https://github.com/#{repo}" : source_url
41
42
 
42
43
  "[#{repo ? (repo + tag) : tag}](#{source}/issues/#{number})"
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "commonmarker"
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/pull_request_creator/message_builder"
@@ -202,9 +203,9 @@ module Dependabot
202
203
  end
203
204
 
204
205
  def link_issues(text:)
205
- IssueLinker.
206
- new(source_url: source_url).
207
- link_issues(text: text)
206
+ IssueLinker
207
+ .new(source_url: source_url)
208
+ .link_issues(text: text)
208
209
  end
209
210
 
210
211
  def fix_relative_links(text:, base_url:)
@@ -245,9 +246,9 @@ module Dependabot
245
246
  end
246
247
 
247
248
  def sanitize_links_and_mentions(text, unsafe: false)
248
- LinkAndMentionSanitizer.
249
- new(github_redirection_service: github_redirection_service).
250
- sanitize_links_and_mentions(text: text, unsafe: unsafe, format_html: source_provider_supports_html?)
249
+ LinkAndMentionSanitizer
250
+ .new(github_redirection_service: github_redirection_service)
251
+ .sanitize_links_and_mentions(text: text, unsafe: unsafe, format_html: source_provider_supports_html?)
251
252
  end
252
253
 
253
254
  def sanitize_template_tags(text)
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "pathname"
@@ -392,15 +393,15 @@ module Dependabot
392
393
  end
393
394
 
394
395
  def updating_a_property?
395
- dependencies.first.
396
- requirements.
397
- any? { |r| r.dig(:metadata, :property_name) }
396
+ dependencies.first
397
+ .requirements
398
+ .any? { |r| r.dig(:metadata, :property_name) }
398
399
  end
399
400
 
400
401
  def updating_a_dependency_set?
401
- dependencies.first.
402
- requirements.
403
- any? { |r| r.dig(:metadata, :dependency_set) }
402
+ dependencies.first
403
+ .requirements
404
+ .any? { |r| r.dig(:metadata, :dependency_set) }
404
405
  end
405
406
 
406
407
  def removing_a_transitive_dependency?
@@ -413,9 +414,9 @@ module Dependabot
413
414
  end
414
415
 
415
416
  def property_name
416
- @property_name ||= dependencies.first.requirements.
417
- find { |r| r.dig(:metadata, :property_name) }&.
418
- dig(:metadata, :property_name)
417
+ @property_name ||= dependencies.first.requirements
418
+ .find { |r| r.dig(:metadata, :property_name) }
419
+ &.dig(:metadata, :property_name)
419
420
 
420
421
  raise "No property name!" unless @property_name
421
422
 
@@ -423,9 +424,9 @@ module Dependabot
423
424
  end
424
425
 
425
426
  def dependency_set
426
- @dependency_set ||= dependencies.first.requirements.
427
- find { |r| r.dig(:metadata, :dependency_set) }&.
428
- dig(:metadata, :dependency_set)
427
+ @dependency_set ||= dependencies.first.requirements
428
+ .find { |r| r.dig(:metadata, :dependency_set) }
429
+ &.dig(:metadata, :dependency_set)
429
430
 
430
431
  raise "No dependency set!" unless @dependency_set
431
432
 
@@ -596,9 +597,9 @@ module Dependabot
596
597
  def metadata_finder(dependency)
597
598
  @metadata_finder ||= {}
598
599
  @metadata_finder[dependency.name] ||=
599
- MetadataFinders.
600
- for_package_manager(dependency.package_manager).
601
- new(dependency: dependency, credentials: credentials)
600
+ MetadataFinders
601
+ .for_package_manager(dependency.package_manager)
602
+ .new(dependency: dependency, credentials: credentials)
602
603
  end
603
604
 
604
605
  def pr_name_prefixer
@@ -648,8 +649,8 @@ module Dependabot
648
649
  # TODO re-use in BranchNamer
649
650
  def library?
650
651
  # Reject any nested child gemspecs/vendored git dependencies
651
- root_files = files.map(&:name).
652
- select { |p| Pathname.new(p).dirname.to_s == "." }
652
+ root_files = files.map(&:name)
653
+ .select { |p| Pathname.new(p).dirname.to_s == "." }
653
654
  return true if root_files.any? { |nm| nm.end_with?(".gemspec") }
654
655
 
655
656
  dependencies.any? { |d| d.humanized_previous_version.nil? }
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/clients/azure"
@@ -179,12 +180,12 @@ module Dependabot
179
180
  angular_only_pres = ANGULAR_PREFIXES - ESLINT_PREFIXES.map(&:downcase)
180
181
 
181
182
  uses_eslint_only_pres =
182
- recent_commit_messages.
183
- any? { |m| eslint_only_pres.any? { |pre| m.match?(/#{pre}[:(]/i) } }
183
+ recent_commit_messages
184
+ .any? { |m| eslint_only_pres.any? { |pre| m.match?(/#{pre}[:(]/i) } }
184
185
 
185
186
  uses_angular_only_pres =
186
- recent_commit_messages.
187
- any? { |m| angular_only_pres.any? { |pre| m.match?(/#{pre}[:(]/i) } }
187
+ recent_commit_messages
188
+ .any? { |m| angular_only_pres.any? { |pre| m.match?(/#{pre}[:(]/i) } }
188
189
 
189
190
  # If using any angular-only prefixes, return true
190
191
  # (i.e., we assume Angular over ESLint when both are present)
@@ -220,12 +221,12 @@ module Dependabot
220
221
  raise "Not using angular commits!" unless using_angular_commit_messages?
221
222
 
222
223
  recent_commits_using_chore =
223
- recent_commit_messages.
224
- any? { |msg| msg.start_with?("chore", "Chore") }
224
+ recent_commit_messages
225
+ .any? { |msg| msg.start_with?("chore", "Chore") }
225
226
 
226
227
  recent_commits_using_build =
227
- recent_commit_messages.
228
- any? { |msg| msg.start_with?("build", "Build") }
228
+ recent_commit_messages
229
+ .any? { |msg| msg.start_with?("build", "Build") }
229
230
 
230
231
  commit_prefix =
231
232
  if recent_commits_using_chore && !recent_commits_using_build
@@ -246,8 +247,8 @@ module Dependabot
246
247
 
247
248
  return last_dependabot_commit_message&.start_with?(/[A-Z]/) if semantic_messages.none?
248
249
 
249
- capitalized_msgs = semantic_messages.
250
- select { |m| m.start_with?(/[A-Z]/) }
250
+ capitalized_msgs = semantic_messages
251
+ .select { |m| m.start_with?(/[A-Z]/) }
251
252
  capitalized_msgs.count.to_f / semantic_messages.count > 0.5
252
253
  end
253
254
 
@@ -255,8 +256,8 @@ module Dependabot
255
256
  return false unless recent_commit_messages.any?
256
257
 
257
258
  gitmoji_messages =
258
- recent_commit_messages.
259
- select { |m| GITMOJI_PREFIXES.any? { |pre| m.match?(/:#{pre}:/i) } }
259
+ recent_commit_messages
260
+ .select { |m| GITMOJI_PREFIXES.any? { |pre| m.match?(/:#{pre}:/i) } }
260
261
 
261
262
  gitmoji_messages.count / recent_commit_messages.count.to_f > 0.3
262
263
  end
@@ -277,55 +278,55 @@ module Dependabot
277
278
  end
278
279
 
279
280
  def recent_github_commit_messages
280
- recent_github_commits.
281
- reject { |c| c.author&.type == "Bot" }.
282
- reject { |c| c.commit&.message&.start_with?("Merge") }.
283
- map(&:commit).
284
- filter_map(&:message).
285
- map(&:strip)
281
+ recent_github_commits
282
+ .reject { |c| c.author&.type == "Bot" }
283
+ .reject { |c| c.commit&.message&.start_with?("Merge") }
284
+ .map(&:commit)
285
+ .filter_map(&:message)
286
+ .map(&:strip)
286
287
  end
287
288
 
288
289
  def recent_gitlab_commit_messages
289
290
  @recent_gitlab_commit_messages ||=
290
291
  gitlab_client_for_source.commits(source.repo)
291
292
 
292
- @recent_gitlab_commit_messages.
293
- reject { |c| c.author_email == dependabot_email }.
294
- reject { |c| c.message&.start_with?("merge !") }.
295
- filter_map(&:message).
296
- map(&:strip)
293
+ @recent_gitlab_commit_messages
294
+ .reject { |c| c.author_email == dependabot_email }
295
+ .reject { |c| c.message&.start_with?("merge !") }
296
+ .filter_map(&:message)
297
+ .map(&:strip)
297
298
  end
298
299
 
299
300
  def recent_azure_commit_messages
300
301
  @recent_azure_commit_messages ||=
301
302
  azure_client_for_source.commits
302
303
 
303
- @recent_azure_commit_messages.
304
- reject { |c| azure_commit_author_email(c) == dependabot_email }.
305
- reject { |c| c.fetch("comment")&.start_with?("Merge") }.
306
- filter_map { |c| c.fetch("comment") }.
307
- map(&:strip)
304
+ @recent_azure_commit_messages
305
+ .reject { |c| azure_commit_author_email(c) == dependabot_email }
306
+ .reject { |c| c.fetch("comment")&.start_with?("Merge") }
307
+ .filter_map { |c| c.fetch("comment") }
308
+ .map(&:strip)
308
309
  end
309
310
 
310
311
  def recent_bitbucket_commit_messages
311
312
  @recent_bitbucket_commit_messages ||=
312
313
  bitbucket_client_for_source.commits(source.repo)
313
314
 
314
- @recent_bitbucket_commit_messages.
315
- reject { |c| bitbucket_commit_author_email(c) == dependabot_email }.
316
- filter_map { |c| c.fetch("message", nil) }.
317
- reject { |m| m.start_with?("Merge") }.
318
- map(&:strip)
315
+ @recent_bitbucket_commit_messages
316
+ .reject { |c| bitbucket_commit_author_email(c) == dependabot_email }
317
+ .filter_map { |c| c.fetch("message", nil) }
318
+ .reject { |m| m.start_with?("Merge") }
319
+ .map(&:strip)
319
320
  end
320
321
 
321
322
  def recent_codecommit_commit_messages
322
323
  @recent_codecommit_commit_messages ||=
323
324
  codecommit_client_for_source.commits
324
- @recent_codecommit_commit_messages.commits.
325
- reject { |c| c.author.email == dependabot_email }.
326
- reject { |c| c.message&.start_with?("Merge") }.
327
- filter_map(&:message).
328
- map(&:strip)
325
+ @recent_codecommit_commit_messages.commits
326
+ .reject { |c| c.author.email == dependabot_email }
327
+ .reject { |c| c.message&.start_with?("Merge") }
328
+ .filter_map(&:message)
329
+ .map(&:strip)
329
330
  end
330
331
 
331
332
  def last_dependabot_commit_message
@@ -341,12 +342,12 @@ module Dependabot
341
342
  end
342
343
 
343
344
  def last_github_dependabot_commit_message
344
- recent_github_commits.
345
- reject { |c| c.commit&.message&.start_with?("Merge") }.
346
- find { |c| c.commit.author&.name&.include?("dependabot") }&.
347
- commit&.
348
- message&.
349
- strip
345
+ recent_github_commits
346
+ .reject { |c| c.commit&.message&.start_with?("Merge") }
347
+ .find { |c| c.commit.author&.name&.include?("dependabot") }
348
+ &.commit
349
+ &.message
350
+ &.strip
350
351
  end
351
352
 
352
353
  def recent_github_commits
@@ -360,40 +361,40 @@ module Dependabot
360
361
  @recent_gitlab_commit_messages ||=
361
362
  gitlab_client_for_source.commits(source.repo)
362
363
 
363
- @recent_gitlab_commit_messages.
364
- find { |c| c.author_email == dependabot_email }&.
365
- message&.
366
- strip
364
+ @recent_gitlab_commit_messages
365
+ .find { |c| c.author_email == dependabot_email }
366
+ &.message
367
+ &.strip
367
368
  end
368
369
 
369
370
  def last_azure_dependabot_commit_message
370
371
  @recent_azure_commit_messages ||=
371
372
  azure_client_for_source.commits
372
373
 
373
- @recent_azure_commit_messages.
374
- find { |c| azure_commit_author_email(c) == dependabot_email }&.
375
- message&.
376
- strip
374
+ @recent_azure_commit_messages
375
+ .find { |c| azure_commit_author_email(c) == dependabot_email }
376
+ &.message
377
+ &.strip
377
378
  end
378
379
 
379
380
  def last_bitbucket_dependabot_commit_message
380
381
  @recent_bitbucket_commit_messages ||=
381
382
  bitbucket_client_for_source.commits(source.repo)
382
383
 
383
- @recent_bitbucket_commit_messages.
384
- find { |c| bitbucket_commit_author_email(c) == dependabot_email }&.
385
- fetch("message", nil)&.
386
- strip
384
+ @recent_bitbucket_commit_messages
385
+ .find { |c| bitbucket_commit_author_email(c) == dependabot_email }
386
+ &.fetch("message", nil)
387
+ &.strip
387
388
  end
388
389
 
389
390
  def last_codecommit_dependabot_commit_message
390
391
  @recent_codecommit_commit_messages ||=
391
392
  codecommit_client_for_source.commits(source.repo)
392
393
 
393
- @recent_codecommit_commit_messages.commits.
394
- find { |c| c.author.email == dependabot_email }&.
395
- message&.
396
- strip
394
+ @recent_codecommit_commit_messages.commits
395
+ .find { |c| c.author.email == dependabot_email }
396
+ &.message
397
+ &.strip
397
398
  end
398
399
 
399
400
  def azure_commit_author_email(commit)
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/metadata_finders"
@@ -33,6 +34,12 @@ module Dependabot
33
34
 
34
35
  class NoHistoryInCommon < StandardError; end
35
36
 
37
+ class UnmergedPRExists < StandardError; end
38
+
39
+ class BaseCommitNotUpToDate < StandardError; end
40
+
41
+ class UnexpectedError < StandardError; end
42
+
36
43
  # AnnotationError is raised if a PR was created, but failed annotation
37
44
  class AnnotationError < StandardError
38
45
  attr_reader :cause, :pull_request
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/clients/azure"
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "octokit"
@@ -197,12 +198,12 @@ module Dependabot
197
198
 
198
199
  @commit_being_updated =
199
200
  if pull_request.commits == 1
200
- github_client_for_source.
201
- git_commit(source.repo, pull_request.head.sha)
201
+ github_client_for_source
202
+ .git_commit(source.repo, pull_request.head.sha)
202
203
  else
203
204
  commits =
204
- github_client_for_source.
205
- pull_request_commits(source.repo, pull_request_number)
205
+ github_client_for_source
206
+ .pull_request_commits(source.repo, pull_request_number)
206
207
 
207
208
  commit = commits.find { |c| c.sha == old_commit }
208
209
  commit&.commit
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/clients/gitlab_with_retries"
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/pull_request_updater/github"
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/shared_helpers"
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "dependabot/version"
@@ -25,14 +26,14 @@ module Dependabot
25
26
  raise ArgumentError, "must be a #{version_class}"
26
27
  end
27
28
 
28
- in_safe_range = safe_versions.
29
- any? { |r| r.satisfied_by?(version) }
29
+ in_safe_range = safe_versions
30
+ .any? { |r| r.satisfied_by?(version) }
30
31
 
31
32
  # If version is known safe for this advisory, it's not vulnerable
32
33
  return false if in_safe_range
33
34
 
34
- in_vulnerable_range = vulnerable_versions.
35
- any? { |r| r.satisfied_by?(version) }
35
+ in_vulnerable_range = vulnerable_versions
36
+ .any? { |r| r.satisfied_by?(version) }
36
37
 
37
38
  # If in the vulnerable range and not known safe, it's vulnerable
38
39
  return true if in_vulnerable_range
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require "digest"
@@ -235,10 +236,10 @@ module Dependabot
235
236
  run_shell_command("git config --global --add safe.directory #{path}")
236
237
  end
237
238
 
238
- github_credentials = credentials.
239
- select { |c| c["type"] == "git_source" }.
240
- select { |c| c["host"] == "github.com" }.
241
- select { |c| c["password"] && c["username"] }
239
+ github_credentials = credentials
240
+ .select { |c| c["type"] == "git_source" }
241
+ .select { |c| c["host"] == "github.com" }
242
+ .select { |c| c["password"] && c["username"] }
242
243
 
243
244
  # If multiple credentials are specified for github.com, pick the one that
244
245
  # *isn't* just an app token (since it must have been added deliberately)