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

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

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

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of VersionResolver.



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/dependabot/composer/update_checker/version_resolver.rb', line 64

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



81
82
83
84
85
86
# File 'lib/dependabot/composer/update_checker/version_resolver.rb', line 81

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