Class: Dependabot::Composer::UpdateChecker::VersionResolver

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/composer/update_checker/version_resolver.rb

Overview

rubocop:disable Metrics/ClassLength

Defined Under Namespace

Classes: MissingExtensions

Constant Summary collapse

MISSING_EXPLICIT_PLATFORM_REQ_REGEX =
%r{
  (?<=PHP\sextension\s)ext\-[^\s\/]+\s.*?\s(?=is|but)|
  (?<=requires\s)php(?:\-[^\s\/]+)?\s.*?\s(?=but)
}x
MISSING_IMPLICIT_PLATFORM_REQ_REGEX =
%r{
  (?<!with|for|by)\sext\-[^\s\/]+\s.*?\s(?=->)|
  (?<=require\s)php(?:\-[^\s\/]+)?\s.*?\s(?=->) # composer v2
}x
VERSION_REGEX =
/[0-9]+(?:\.[A-Za-z0-9\-_]+)*/
SOURCE_TIMED_OUT_REGEX =

Example Timeout error from Composer 2.7.7: "curl error 28 while downloading https://example.com:81/packages.json: Failed to connect to example.com port 81 after 9853 ms: Connection timed out" # rubocop:disable Layout/LineLength

%r{curl error 28 while downloading (?<url>https?://.+/packages\.json): }

Instance Method Summary collapse

Constructor Details

#initialize(credentials:, dependency:, dependency_files:, requirements_to_unlock:, latest_allowable_version:) ⇒ VersionResolver

Returns a new instance of VersionResolver.



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/dependabot/composer/update_checker/version_resolver.rb', line 58

def initialize(
  credentials:,
  dependency:,
  dependency_files:,
  requirements_to_unlock:,
  latest_allowable_version:
)
  @credentials                  = credentials
  @dependency                   = dependency
  @dependency_files             = dependency_files
  @requirements_to_unlock       = requirements_to_unlock
  @latest_allowable_version     = latest_allowable_version
  @composer_platform_extensions = T.let(initial_platform, T::Hash[String, T::Array[String]])
  @error_handler                = T.let(ComposerErrorHandler.new, ComposerErrorHandler)
end

Instance Method Details

#latest_resolvable_versionObject



75
76
77
78
79
80
# File 'lib/dependabot/composer/update_checker/version_resolver.rb', line 75

def latest_resolvable_version
  @latest_resolvable_version ||= T.let(
    fetch_latest_resolvable_version,
    T.nilable(Dependabot::Version)
  )
end