Skip to content

Commit

Permalink
Further move common logic down the stack
Browse files Browse the repository at this point in the history
  • Loading branch information
deivid-rodriguez committed Nov 19, 2022
1 parent b6951a2 commit b30b8d7
Show file tree
Hide file tree
Showing 13 changed files with 52 additions and 66 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,18 +81,17 @@ def filter_ignored_versions(versions_array)
end

def filter_lower_versions(versions_array)
return versions_array unless dependency.version && Gem::Version.correct?(dependency.version)
return versions_array unless dependency.numeric_version

versions_array.
select { |version| version > Gem::Version.new(dependency.version) }
select { |version| version > dependency.numeric_version }
end

def wants_prerelease?
@wants_prerelease ||=
begin
current_version = dependency.version
if current_version && Gem::Version.correct?(current_version) &&
Gem::Version.new(current_version).prerelease?
current_version = dependency.numeric_version
if current_version&.prerelease?
true
else
dependency.requirements.any? do |req|
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ def filter_ignored_versions(versions_array)
end

def filter_lower_versions(versions_array)
return versions_array unless dependency.version && version_class.correct?(dependency.version)
return versions_array unless dependency.numeric_version

versions_array.
select { |version| version > version_class.new(dependency.version) }
select { |version| version > dependency.numeric_version }
end

def available_versions
Expand All @@ -89,10 +89,7 @@ def crates_listing
end

def wants_prerelease?
if dependency.version &&
version_class.new(dependency.version).prerelease?
return true
end
return true if dependency.numeric_version&.prerelease?

dependency.requirements.any? do |req|
reqs = (req.fetch(:requirement) || "").split(",").map(&:strip)
Expand Down
8 changes: 8 additions & 0 deletions common/lib/dependabot/dependency.rb
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ def removed?
@removed
end

def numeric_version
@numeric_version ||= version_class.new(version) if version && version_class.correct?(version)
end

def to_h
{
"name" => name,
Expand Down Expand Up @@ -136,6 +140,10 @@ def eql?(other)

private

def version_class
Utils.version_class_for_package_manager(package_manager)
end

def check_values
raise ArgumentError, "blank strings must not be provided as versions" if [version, previous_version].any?("")

Expand Down
2 changes: 1 addition & 1 deletion common/lib/dependabot/update_checkers/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ def requirements_up_to_date?
end

def current_version
@current_version ||= version_class.new(dependency.version)
@current_version ||= dependency.numeric_version
end

def can_compare_requirements?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,15 @@ def filter_ignored_versions(versions_array)
end

def filter_lower_versions(versions_array)
return versions_array unless dependency.version && version_class.correct?(dependency.version)
return versions_array unless dependency.numeric_version

versions_array.
select { |version| version > version_class.new(dependency.version) }
select { |version| version > dependency.numeric_version }
end

def wants_prerelease?
current_version = dependency.version
return true if current_version && version_class.new(current_version).prerelease?
current_version = dependency.numeric_version
return true if current_version&.prerelease?

dependency.requirements.any? do |req|
req[:requirement].match?(/\d-[A-Za-z]/)
Expand Down
2 changes: 1 addition & 1 deletion elm/lib/dependabot/elm/update_checker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def candidate_versions
end

def filter_lower_versions(versions_array)
return versions_array unless dependency.version && version_class.correct?(dependency.version)
return versions_array unless current_version

versions_array.
select { |version| version > current_version }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,10 +143,10 @@ def filter_prerelease_versions(versions_array)
end

def filter_lower_versions(versions_array)
return versions_array unless dependency.version && version_class.correct?(dependency.version)
return versions_array unless dependency.numeric_version

versions_array.
select { |version| version > version_class.new(dependency.version) }
select { |version| version > dependency.numeric_version }
end

def filter_ignored_versions(versions_array)
Expand All @@ -162,9 +162,8 @@ def filter_ignored_versions(versions_array)
def wants_prerelease?
@wants_prerelease ||=
begin
current_version = dependency.version
current_version && version_class.correct?(current_version) &&
version_class.new(current_version).prerelease?
current_version = dependency.numeric_version
current_version&.prerelease?
end
end

Expand Down
14 changes: 6 additions & 8 deletions gradle/lib/dependabot/gradle/update_checker/version_finder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -112,25 +112,23 @@ def filter_ignored_versions(possible_versions)
end

def filter_lower_versions(possible_versions)
return possible_versions unless dependency.version && version_class.correct?(dependency.version)
return possible_versions unless dependency.numeric_version

possible_versions.select do |v|
v.fetch(:version) > version_class.new(dependency.version)
v.fetch(:version) > dependency.numeric_version
end
end

def wants_prerelease?
return false unless dependency.version
return false unless version_class.correct?(dependency.version)
return false unless dependency.numeric_version

version_class.new(dependency.version).prerelease?
dependency.numeric_version.prerelease?
end

def wants_date_based_version?
return false unless dependency.version
return false unless version_class.correct?(dependency.version)
return false unless dependency.numeric_version

version_class.new(dependency.version) >= version_class.new(100)
dependency.numeric_version >= version_class.new(100)
end

def google_version_details
Expand Down
8 changes: 1 addition & 7 deletions hex/lib/dependabot/hex/update_checker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ def latest_release_from_hex_registry
# rubocop:enable Metrics/PerceivedComplexity

def filter_lower_versions(versions_array)
return versions_array unless current_version && version_class.correct?(current_version)
return versions_array unless current_version

versions_array.select do |version|
version > current_version
Expand All @@ -251,12 +251,6 @@ def hex_registry_response
nil
end

def current_version
return unless dependency.version && version_class.correct?(dependency.version)

version_class.new(dependency.version)
end

def wants_prerelease?
return true if current_version&.prerelease?

Expand Down
14 changes: 6 additions & 8 deletions maven/lib/dependabot/maven/update_checker/version_finder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -113,25 +113,23 @@ def filter_ignored_versions(possible_versions)
end

def filter_lower_versions(possible_versions)
return possible_versions unless dependency.version && version_class.correct?(dependency.version)
return possible_versions unless dependency.numeric_version

possible_versions.select do |v|
v.fetch(:version) > version_class.new(dependency.version)
v.fetch(:version) > dependency.numeric_version
end
end

def wants_prerelease?
return false unless dependency.version
return false unless version_class.correct?(dependency.version)
return false unless dependency.numeric_version

version_class.new(dependency.version).prerelease?
dependency.numeric_version.prerelease?
end

def wants_date_based_version?
return false unless dependency.version
return false unless version_class.correct?(dependency.version)
return false unless dependency.numeric_version

version_class.new(dependency.version) >= version_class.new(100)
dependency.numeric_version >= version_class.new(100)
end

def released?(version)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,10 +130,10 @@ def filter_out_of_range_versions(versions_array)
end

def filter_lower_versions(versions_array)
return versions_array unless dependency.version && version_class.correct?(dependency.version)
return versions_array unless dependency.numeric_version

versions_array.
select { |version, _| version > version_class.new(dependency.version) }
select { |version, _| version > dependency.numeric_version }
end

def version_from_dist_tags
Expand All @@ -159,13 +159,10 @@ def version_from_dist_tags
wants_latest_dist_tag?(latest) ? latest : nil
end

# rubocop:disable Metrics/PerceivedComplexity
def related_to_current_pre?(version)
current_version = dependency.version
if current_version &&
version_class.correct?(current_version) &&
version_class.new(current_version).prerelease? &&
version_class.new(current_version).release == version.release
current_version = dependency.numeric_version
if current_version&.prerelease? &&
current_version&.release == version.release
return true
end

Expand All @@ -181,7 +178,6 @@ def related_to_current_pre?(version)
false
end
end
# rubocop:enable Metrics/PerceivedComplexity

def specified_dist_tag_requirement?
dependency.requirements.any? do |req|
Expand All @@ -204,10 +200,9 @@ def wants_latest_dist_tag?(latest_version)
end

def current_version_greater_than?(version)
return false unless dependency.version
return false unless version_class.correct?(dependency.version)
return false unless dependency.numeric_version

version_class.new(dependency.version) > version
dependency.numeric_version > version
end

def current_requirement_greater_than?(version)
Expand Down
12 changes: 5 additions & 7 deletions nuget/lib/dependabot/nuget/update_checker/version_finder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,10 @@ def filter_ignored_versions(possible_versions)
end

def filter_lower_versions(possible_versions)
return possible_versions unless dependency.version && version_class.correct?(dependency.version)
return possible_versions unless dependency.numeric_version

possible_versions.select do |v|
v.fetch(:version) > version_class.new(dependency.version)
v.fetch(:version) > dependency.numeric_version
end
end

Expand Down Expand Up @@ -162,11 +162,9 @@ def dependency_details_from_v2_entry(entry)

# rubocop:disable Metrics/PerceivedComplexity
def related_to_current_pre?(version)
current_version = dependency.version
if current_version &&
version_class.correct?(current_version) &&
version_class.new(current_version).prerelease? &&
version_class.new(current_version).release == version.release
current_version = dependency.numeric_version
if current_version&.prerelease? &&
current_version&.release == version.release
return true
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,9 @@ def filter_ignored_versions(versions_array)
end

def filter_lower_versions(versions_array)
return versions_array unless dependency.version && version_class.correct?(dependency.version)
return versions_array unless dependency.numeric_version

versions_array.select { |version| version > version_class.new(dependency.version) }
versions_array.select { |version| version > dependency.numeric_version }
end

def filter_out_of_range_versions(versions_array)
Expand Down

0 comments on commit b30b8d7

Please sign in to comment.