diff options
| author | David Rodriguez <deivid.rodriguez@riseup.net> | 2024-03-21 17:20:57 +0100 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-04-01 15:03:25 +0000 |
| commit | 0a1e36964dfa634bfd3088da5362093b89103a33 (patch) | |
| tree | 8108318da44609f8db4612ef11330b5a3911d5ac /lib | |
| parent | acbd91e47ff36216459bbba4368b04e6a3079b2a (diff) | |
[rubygems/rubygems] Remove unnecessary filtering
We do that when first caching versions, and then it's no longer
necessary.
https://github.com/rubygems/rubygems/commit/ede15847db
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/bundler/gem_version_promoter.rb | 52 |
1 files changed, 23 insertions, 29 deletions
diff --git a/lib/bundler/gem_version_promoter.rb b/lib/bundler/gem_version_promoter.rb index b666c29d32..66141b7b63 100644 --- a/lib/bundler/gem_version_promoter.rb +++ b/lib/bundler/gem_version_promoter.rb @@ -53,9 +53,30 @@ module Bundler # @return [Specification] A new instance of the Specification Array sorted and # possibly filtered. def sort_versions(package, specs) - specs = filter_versions(package, specs) + locked_version = package.locked_version - sort_dep_specs(specs, package) + result = specs.sort do |a, b| + unless package.prerelease_specified? || pre? + a_pre = a.prerelease? + b_pre = b.prerelease? + + next -1 if a_pre && !b_pre + next 1 if b_pre && !a_pre + end + + if major? || locked_version.nil? + a <=> b + elsif either_version_older_than_locked?(a, b, locked_version) + a <=> b + elsif segments_do_not_match?(a, b, :major) + b <=> a + elsif !minor? && segments_do_not_match?(a, b, :minor) + b <=> a + else + a <=> b + end + end + post_sort(result, package.unlock?, locked_version) end # @return [bool] Convenience method for testing value of level variable. @@ -91,33 +112,6 @@ module Bundler private - def sort_dep_specs(specs, package) - locked_version = package.locked_version - - result = specs.sort do |a, b| - unless package.prerelease_specified? || pre? - a_pre = a.prerelease? - b_pre = b.prerelease? - - next -1 if a_pre && !b_pre - next 1 if b_pre && !a_pre - end - - if major? || locked_version.nil? - a <=> b - elsif either_version_older_than_locked?(a, b, locked_version) - a <=> b - elsif segments_do_not_match?(a, b, :major) - b <=> a - elsif !minor? && segments_do_not_match?(a, b, :minor) - b <=> a - else - a <=> b - end - end - post_sort(result, package.unlock?, locked_version) - end - def either_version_older_than_locked?(a, b, locked_version) a.version < locked_version || b.version < locked_version end |
