summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2021-12-14 15:56:03 +0100
committergit <svn-admin@ruby-lang.org>2021-12-17 16:35:18 +0900
commitc710cdb905a58b4ef0c7b5a9a8e867b382ccfd66 (patch)
tree054076aa06e579e7b054fa19097d94dfa5ee3a19 /lib
parentaf4b4fd19b7972adc165e70e9d41ad7e14c9a235 (diff)
[rubygems/rubygems] Improve error message if only platform doesn't match
https://github.com/rubygems/rubygems/commit/077e3c2e4d
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler/resolver.rb14
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb
index 8830621e0e..dfea95e30a 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -264,13 +264,23 @@ module Bundler
else
source = source_for(name)
specs = source.specs.search(name)
+ matching_part = name
+ requirement_label = SharedHelpers.pretty_dependency(requirement)
cache_message = begin
" or in gems cached in #{Bundler.settings.app_cache_path}" if Bundler.app_cache.exist?
rescue GemfileNotFound
nil
end
- message = String.new("Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in #{source}#{cache_message}.\n")
- message << "The source contains the following gems matching '#{name}': #{specs.map(&:full_name).join(", ")}" if specs.any?
+ specs_matching_requirement = specs.select {| spec| requirement.matches_spec?(spec) }
+
+ if specs_matching_requirement.any?
+ specs = specs_matching_requirement
+ matching_part = requirement_label
+ requirement_label = "#{requirement_label} #{requirement.__platform}"
+ end
+
+ message = String.new("Could not find gem '#{requirement_label}' in #{source}#{cache_message}.\n")
+ message << "The source contains the following gems matching '#{matching_part}': #{specs.map(&:full_name).join(", ")}" if specs.any?
end
raise GemNotFound, message
end