dependabot-composer 0.112.13 → 0.112.14

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: a0b719288dd5f6a3665d1ea7af743acbcf26045966c46c8fe33d2d8261460ba9
4
- data.tar.gz: 18d1ec9ee8f1e1af15d3404f4f7b3077f82b373a9cf00b7626ea872266fda0df
3
+ metadata.gz: ec045c6643c947a26fd27cd96387d9a4d7bb3a16acfe6c420608451806cbb925
4
+ data.tar.gz: 27408a5151879a65b03ce2c56bf152e4a68d5bc1e28cb636df527838bda22c01
5
5
  SHA512:
6
- metadata.gz: 56ef078a97030517d06442165836949dd1e93bea43811bcc56d75db9d86118d1a5297c53f77a27a3af447f173d87e256d2d9668adb18282b0e05ae054e02d266
7
- data.tar.gz: d94a4440f5140d9cf68e38a298de181f13e8fe7174e73f331bea045d717452db52d5a3f8ee7a6c366f77a6c66fa418a0afe4917ac62990177c4493f238cba9e3
6
+ metadata.gz: df2c112c12f6329b51378924eda9ae6d38c094cc6937fb4c3939f47c8eece6033b91805b122ab3cc9e507dcbf14983af380e7435d3a4d49444fce514bb372319
7
+ data.tar.gz: 82c6456e9a5d8f53cb2b970be143eb0361226be58670a5022baf97e4b2bd29f237720f530011344824cdf162e2bed276e0e3c4015b2105c92fcc026d88012b15
@@ -126,7 +126,8 @@ module Dependabot
126
126
  # rubocop:disable Metrics/PerceivedComplexity
127
127
  def handle_composer_errors(error)
128
128
  if error.message.include?("package requires php") ||
129
- error.message.include?("requested PHP extension")
129
+ error.message.include?("requested PHP extension") ||
130
+ !library? && error.message.match?(MISSING_PLATFORM_REQ_REGEX)
130
131
  missing_extensions =
131
132
  error.message.scan(MISSING_PLATFORM_REQ_REGEX).
132
133
  map do |extension_string|
@@ -194,6 +195,10 @@ module Dependabot
194
195
  # rubocop:enable Metrics/MethodLength
195
196
  # rubocop:enable Metrics/PerceivedComplexity
196
197
 
198
+ def library?
199
+ parsed_composer_json["type"] == "library"
200
+ end
201
+
197
202
  def write_temporary_dependency_files
198
203
  path_dependencies.each do |file|
199
204
  path = file.name
@@ -411,15 +416,30 @@ module Dependabot
411
416
  end
412
417
 
413
418
  def initial_platform
414
- return {} unless parsed_composer_json["type"] == "library"
419
+ platform_php = parsed_composer_json.dig("config", "platform", "php")
420
+
421
+ platform = {}
422
+ if platform_php.is_a?(String) && requirement_valid?(platform_php)
423
+ platform["php"] = [platform_php]
424
+ end
425
+
426
+ # Note: We *don't* include the require-dev PHP version in our initial
427
+ # platform. If we fail to resolve with the PHP version specified in
428
+ # `require` then it will be picked up in a subsequent iteration.
429
+ requirement_php = parsed_composer_json.dig("require", "php")
430
+ return platform unless requirement_php.is_a?(String)
431
+ return platform unless requirement_valid?(requirement_php)
415
432
 
416
- php_requirements = [
417
- parsed_composer_json.dig("require", "php"),
418
- parsed_composer_json.dig("require-dev", "php")
419
- ].compact
420
- return {} if php_requirements.empty?
433
+ platform["php"] ||= []
434
+ platform["php"] << requirement_php
435
+ platform
436
+ end
421
437
 
422
- { "php" => php_requirements }
438
+ def requirement_valid?(req_string)
439
+ Composer::Requirement.requirements_array(req_string)
440
+ true
441
+ rescue Gem::Requirement::BadRequirementError
442
+ false
423
443
  end
424
444
 
425
445
  def parsed_composer_json
@@ -219,7 +219,8 @@ module Dependabot
219
219
  error.message.include?("does not allow connections to http://")
220
220
  raise Dependabot::DependencyFileNotResolvable, sanitized_message
221
221
  elsif error.message.include?("package requires php") ||
222
- error.message.include?("requested PHP extension")
222
+ error.message.include?("requested PHP extension") ||
223
+ !library? && error.message.match?(MISSING_PLATFORM_REQ_REGEX)
223
224
  missing_extensions =
224
225
  error.message.scan(MISSING_PLATFORM_REQ_REGEX).
225
226
  map do |extension_string|
@@ -284,6 +285,10 @@ module Dependabot
284
285
  # rubocop:enable Metrics/CyclomaticComplexity
285
286
  # rubocop:enable Metrics/MethodLength
286
287
 
288
+ def library?
289
+ parsed_composer_file["type"] == "library"
290
+ end
291
+
287
292
  def check_original_requirements_resolvable
288
293
  base_directory = dependency_files.first.directory
289
294
  SharedHelpers.in_a_temporary_directory(base_directory) do
@@ -352,14 +357,23 @@ module Dependabot
352
357
  end
353
358
 
354
359
  def initial_platform
355
- return {} unless parsed_composer_file["type"] == "library"
360
+ platform_php = parsed_composer_file.dig("config", "platform", "php")
361
+
362
+ platform = {}
363
+ if platform_php.is_a?(String) && requirement_valid?(platform_php)
364
+ platform["php"] = [platform_php]
365
+ end
356
366
 
357
367
  # Note: We *don't* include the require-dev PHP version in our initial
358
368
  # platform. If we fail to resolve with the PHP version specified in
359
369
  # `require` then it will be picked up in a subsequent iteration.
360
- return {} unless parsed_composer_file.dig("require", "php")
370
+ requirement_php = parsed_composer_file.dig("require", "php")
371
+ return platform unless requirement_php.is_a?(String)
372
+ return platform unless requirement_valid?(requirement_php)
361
373
 
362
- { "php" => [parsed_composer_file.dig("require", "php")] }
374
+ platform["php"] ||= []
375
+ platform["php"] << requirement_php
376
+ platform
363
377
  end
364
378
 
365
379
  def parsed_composer_file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-composer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.112.13
4
+ version: 0.112.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.112.13
19
+ version: 0.112.14
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.112.13
26
+ version: 0.112.14
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement