dependabot-composer 0.295.0 → 0.296.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: 7d85bd1ad74378720906cdd9859f26ce0714b1b95a2858d0543b98dc1a777133
4
- data.tar.gz: a579d3f1e46f43f8e6e8c0ec17c2a7125d620986fd685d5a38bada8cf76d79e9
3
+ metadata.gz: 0af2f173fa02cd21f81d4f91269332f220886a0c1fa3a272def5cbc85ec40368
4
+ data.tar.gz: a10e62096f71cd6b0636f562790a6213cdc2d92aaecf3726dad56df76ced281e
5
5
  SHA512:
6
- metadata.gz: f055d8341e1ef864bc17e6ddfcfd2e4e7b35d48c9cd2c74430315692bdb9cdb02a678cb9b739e25177f417808374a8c6ea7df98af4a9fcfe4a4a4aff6ffecd3c
7
- data.tar.gz: f267b7fd5bf57b381f9f199cce7ed7c6d5c3f70f7bddf49ba6e04ecf02bbb5826d233fb923751a59698487a211216372d39c655214891c10ee2c450fc2679111
6
+ metadata.gz: f93ec5ad2f8755b01b16b1fbe37da6581f60e50c48ded3224fcd68bda2ff4f527dcc90656ab26a6d93d56394557a04cfdfde0d0011d1464bdc29907f85a08f21
7
+ data.tar.gz: 867705928cce53572e4d7a5369d22d09602943a7322c4336b4d8ce98ce5c7542b0cd12de1db83a5461a6273d1d2ccdf3ad864c28d0b39f71f0e3bf15f8ab296b
@@ -48,6 +48,7 @@ module Dependabot
48
48
  @requirements_to_unlock = requirements_to_unlock
49
49
  @latest_allowable_version = latest_allowable_version
50
50
  @composer_platform_extensions = initial_platform
51
+ @error_handler = ComposerErrorHandler.new
51
52
  end
52
53
 
53
54
  def latest_resolvable_version
@@ -62,6 +63,7 @@ module Dependabot
62
63
  attr_reader :requirements_to_unlock
63
64
  attr_reader :latest_allowable_version
64
65
  attr_reader :composer_platform_extensions
66
+ attr_reader :error_handler
65
67
 
66
68
  def fetch_latest_resolvable_version
67
69
  version = fetch_latest_resolvable_version_string
@@ -344,6 +346,8 @@ module Dependabot
344
346
  "See https://getcomposer.org/doc/04-schema.md for details on the schema."
345
347
  raise Dependabot::DependencyFileNotParseable, msg
346
348
  else
349
+ error_handler.handle_composer_error(error)
350
+
347
351
  raise error
348
352
  end
349
353
  end
@@ -524,5 +528,52 @@ module Dependabot
524
528
  end
525
529
  end
526
530
  end
531
+
532
+ class ComposerErrorHandler
533
+ extend T::Sig
534
+
535
+ # Private source errors
536
+ CURL_ERROR = /curl error 52 while downloading (?<url>.*): Empty reply from server/
537
+
538
+ PRIVATE_SOURCE_AUTH_FAIL = [
539
+ /Could not authenticate against (?<url>.*)/,
540
+ /The '(?<url>.*)' URL could not be accessed \(HTTP 403\)/,
541
+ /The "(?<url>.*)" file could not be downloaded/
542
+ ].freeze
543
+
544
+ REQUIREMENT_ERROR = /^(?<req>.*) is invalid, it should not contain uppercase characters/
545
+
546
+ NO_URL = "No URL specified"
547
+
548
+ def sanitize_uri(url)
549
+ url = "http://#{url}" unless url.start_with?("http")
550
+ uri = URI.parse(url)
551
+ host = T.must(uri.host).downcase
552
+ host.start_with?("www.") ? host[4..-1] : host
553
+ end
554
+
555
+ # Handles errors with specific to composer error codes
556
+ sig { params(error: SharedHelpers::HelperSubprocessFailed).void }
557
+ def handle_composer_error(error)
558
+ # private source auth errors
559
+ PRIVATE_SOURCE_AUTH_FAIL.each do |regex|
560
+ next unless error.message.match?(regex)
561
+
562
+ url = T.must(error.message.match(regex)).named_captures["url"]
563
+ raise Dependabot::PrivateSourceAuthenticationFailure, sanitize_uri(url).empty? ? NO_URL : sanitize_uri(url)
564
+ end
565
+
566
+ # invalid requirement mentioned in manifest file
567
+ if error.message.match?(REQUIREMENT_ERROR)
568
+ raise DependencyFileNotResolvable,
569
+ "Invalid requirement: #{T.must(error.message.match(REQUIREMENT_ERROR)).named_captures['req']}"
570
+ end
571
+
572
+ return unless error.message.match?(CURL_ERROR)
573
+
574
+ url = T.must(error.message.match(CURL_ERROR)).named_captures["url"]
575
+ raise PrivateSourceBadResponse, url
576
+ end
577
+ end
527
578
  end
528
579
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-composer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.295.0
4
+ version: 0.296.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-30 00:00:00.000000000 Z
11
+ date: 2025-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dependabot-common
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.295.0
19
+ version: 0.296.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.295.0
26
+ version: 0.296.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: debug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -280,7 +280,7 @@ licenses:
280
280
  - MIT
281
281
  metadata:
282
282
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
283
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.295.0
283
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.296.0
284
284
  post_install_message:
285
285
  rdoc_options: []
286
286
  require_paths: