dependabot-common 0.243.0 → 0.245.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c66b8233da2a6599d23a5c9a0db612e4225e7a1ef54aad500fd8861e9a98273
4
- data.tar.gz: 682b44c5d4ec337dd4a29a80f029e1e84869b9434aea2619969b5079aecac51c
3
+ metadata.gz: fbc9b9fbba7549f6bdbb7dafec2f3d3111bd2e8263e966b3eaf1bfce19be3a01
4
+ data.tar.gz: 2e396338454b56410104329634792a20076533cadf2418f15e74d591612969eb
5
5
  SHA512:
6
- metadata.gz: 9e5c58e16b97382100d7b9b72dcc85ed38d48b8df82a9a1135d72ecda5deab0182a333a4e4ddbb1840b3d2b73c8cf36d3555c5a89af4bf780b76998fabc36404
7
- data.tar.gz: 65b24a2eb7ab108af968ccfde8934e74e5a1bf584af8b517df75a369b48a515a3011c2c2e4392ffb57f6848b800d83c2eea82dac6d9820fa1bd45ec4b56af166
6
+ metadata.gz: 2cc3166e278f88f679a7d177b74d77ba9d8cd48ac22694db65a61a36bf5386efb7fd459e430f971cad2e21f33253e67f1e264137fcfc48b57d3d41480c71f9f9
7
+ data.tar.gz: fc85175d8dfe6020bc3737fec46342fe529371e984d0f1d806195c697124ff6c63418edc7a1135a30c1c2ceff6caf28be2a715463c466c6bfa3267b5b0249b8a
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require_relative "bitbucket"
@@ -6,15 +6,18 @@ require_relative "bitbucket"
6
6
  module Dependabot
7
7
  module Clients
8
8
  class BitbucketWithRetries
9
- RETRYABLE_ERRORS = [
10
- Excon::Error::Timeout,
11
- Excon::Error::Socket
12
- ].freeze
9
+ extend T::Sig
10
+
11
+ RETRYABLE_ERRORS = T.let(
12
+ [Excon::Error::Timeout, Excon::Error::Socket].freeze,
13
+ T::Array[T.class_of(Excon::Error)]
14
+ )
13
15
 
14
16
  #######################
15
17
  # Constructor methods #
16
18
  #######################
17
19
 
20
+ sig { params(credentials: T::Array[Dependabot::Credential]).returns(BitbucketWithRetries) }
18
21
  def self.for_bitbucket_dot_org(credentials:)
19
22
  credential =
20
23
  credentials
@@ -28,27 +31,48 @@ module Dependabot
28
31
  # Proxying #
29
32
  ############
30
33
 
31
- def initialize(max_retries: 3, **args)
32
- @max_retries = max_retries || 3
33
- @client = Bitbucket.new(**T.unsafe(args))
34
+ sig { params(credentials: T.nilable(Dependabot::Credential), max_retries: T.nilable(Integer)).void }
35
+ def initialize(credentials:, max_retries: 3)
36
+ @max_retries = T.let(max_retries || 3, Integer)
37
+ @client = T.let(Bitbucket.new(credentials: credentials), Dependabot::Clients::Bitbucket)
34
38
  end
35
39
 
40
+ sig do
41
+ params(
42
+ method_name: T.any(Symbol, String),
43
+ args: T.untyped,
44
+ block: T.nilable(T.proc.returns(T.untyped))
45
+ )
46
+ .returns(T.untyped)
47
+ end
36
48
  def method_missing(method_name, *args, &block)
37
49
  retry_connection_failures do
38
50
  if @client.respond_to?(method_name)
39
51
  mutatable_args = args.map(&:dup)
40
- @client.public_send(method_name, *mutatable_args, &block)
52
+ T.unsafe(@client).public_send(method_name, *mutatable_args, &block)
41
53
  else
42
54
  super
43
55
  end
44
56
  end
45
57
  end
46
58
 
59
+ sig do
60
+ params(
61
+ method_name: Symbol,
62
+ include_private: T::Boolean
63
+ )
64
+ .returns(T::Boolean)
65
+ end
47
66
  def respond_to_missing?(method_name, include_private = false)
48
67
  @client.respond_to?(method_name) || super
49
68
  end
50
69
 
51
- def retry_connection_failures
70
+ sig do
71
+ type_parameters(:T)
72
+ .params(_blk: T.proc.returns(T.type_parameter(:T)))
73
+ .returns(T.type_parameter(:T))
74
+ end
75
+ def retry_connection_failures(&_blk)
52
76
  retry_attempt = 0
53
77
 
54
78
  begin
@@ -2,6 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "sorbet-runtime"
5
+ require "forwardable"
5
6
 
6
7
  module Dependabot
7
8
  class Credential
@@ -393,7 +393,7 @@ module Dependabot
393
393
  client = Clients::BitbucketWithRetries
394
394
  .for_bitbucket_dot_org(credentials: credentials)
395
395
 
396
- response = client.get(url)
396
+ response = T.unsafe(client).get(url)
397
397
 
398
398
  # Conservatively assume that ref2 is ahead in the equality case, of
399
399
  # if we get an unexpected format (e.g., due to a 404)
@@ -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("\"", "\\\"")
@@ -26,7 +26,7 @@ module Dependabot
26
26
 
27
27
  sig { returns(T::Boolean) }
28
28
  def changed?
29
- changes.any? || !changed_files.empty?
29
+ changes.any? || !changed_files(ignored_mode: "no").empty?
30
30
  end
31
31
 
32
32
  sig { override.returns(String) }
@@ -53,7 +53,7 @@ module Dependabot
53
53
  .returns(T.nilable(T::Array[Dependabot::Workspace::ChangeAttempt]))
54
54
  end
55
55
  def store_change(memo = nil)
56
- return nil if changed_files.empty?
56
+ return nil if changed_files(ignored_mode: "no").empty?
57
57
 
58
58
  debug("store_change - before: #{current_commit}")
59
59
  sha, diff = commit(memo)
data/lib/dependabot.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Dependabot
5
- VERSION = "0.243.0"
5
+ VERSION = "0.245.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.243.0
4
+ version: 0.245.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-13 00:00:00.000000000 Z
11
+ date: 2024-02-22 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.243.0
570
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.245.0
571
571
  post_install_message:
572
572
  rdoc_options: []
573
573
  require_paths: