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)