lib/dependabot/composer/update_checker/requirements_updater.rb in dependabot-composer-0.246.0 vs lib/dependabot/composer/update_checker/requirements_updater.rb in dependabot-composer-0.247.0
- old
+ new
@@ -4,25 +4,37 @@
################################################################################
# For more details on Composer version constraints, see: #
# https://getcomposer.org/doc/articles/versions.md#writing-version-constraints #
################################################################################
+require "sorbet-runtime"
+
+require "dependabot/composer/requirement"
require "dependabot/composer/update_checker"
require "dependabot/composer/version"
-require "dependabot/composer/requirement"
+require "dependabot/requirements_update_strategy"
module Dependabot
module Composer
class UpdateChecker
class RequirementsUpdater
+ extend T::Sig
+
ALIAS_REGEX = /[a-z0-9\-_\.]*\sas\s+/
VERSION_REGEX = /(?:#{ALIAS_REGEX})?[0-9]+(?:\.[a-zA-Z0-9*\-]+)*/
AND_SEPARATOR = /(?<=[a-zA-Z0-9*])(?<!\sas)[\s,]+(?![\s,]*[|-]|as)/
OR_SEPARATOR = /(?<=[a-zA-Z0-9*])[\s,]*\|\|?\s*/
SEPARATOR = /(?:#{AND_SEPARATOR})|(?:#{OR_SEPARATOR})/
- ALLOWED_UPDATE_STRATEGIES =
- %i(lockfile_only widen_ranges bump_versions bump_versions_if_necessary).freeze
+ ALLOWED_UPDATE_STRATEGIES = T.let(
+ [
+ RequirementsUpdateStrategy::LockfileOnly,
+ RequirementsUpdateStrategy::WidenRanges,
+ RequirementsUpdateStrategy::BumpVersions,
+ RequirementsUpdateStrategy::BumpVersionsIfNecessary
+ ].freeze,
+ T::Array[Dependabot::RequirementsUpdateStrategy]
+ )
def initialize(requirements:, update_strategy:,
latest_resolvable_version:)
@requirements = requirements
@update_strategy = update_strategy
@@ -34,11 +46,11 @@
@latest_resolvable_version =
version_class.new(latest_resolvable_version)
end
def updated_requirements
- return requirements if update_strategy == :lockfile_only
+ return requirements if update_strategy == RequirementsUpdateStrategy::LockfileOnly
return requirements unless latest_resolvable_version
requirements.map { |req| updated_requirement(req) }
end
@@ -65,16 +77,16 @@
return req unless req_string.match?(/\d/)
return req if numeric_or_string_reqs.none?
return updated_alias(req) if req_string.match?(ALIAS_REGEX)
return req if req_satisfied_by_latest_resolvable?(req_string) &&
- update_strategy != :bump_versions
+ update_strategy != RequirementsUpdateStrategy::BumpVersions
new_req =
case update_strategy
- when :widen_ranges
+ when RequirementsUpdateStrategy::WidenRanges
widen_requirement(req, or_separator)
- when :bump_versions, :bump_versions_if_necessary
+ when RequirementsUpdateStrategy::BumpVersions, RequirementsUpdateStrategy::BumpVersionsIfNecessary
update_requirement_version(req, or_separator)
end
new_req_string =
[new_req[:requirement], *branch_or_string_reqs].join(or_separator)