ARGV#kegs: using installed_prefix to locate keg

This commit is contained in:
Xu Cheng 2016-07-16 21:05:28 +08:00
parent f811a45fe4
commit 7e14ec0ba6
No known key found for this signature in database
GPG Key ID: C2A3860FA0B459CE

View File

@ -49,7 +49,7 @@ module HomebrewArgvExtension
require "keg" require "keg"
require "formula" require "formula"
@kegs ||= downcased_unique_named.collect do |name| @kegs ||= downcased_unique_named.collect do |name|
rack = Formulary.to_rack(name) rack = Formulary.to_rack(name.downcase)
dirs = rack.directory? ? rack.subdirs : [] dirs = rack.directory? ? rack.subdirs : []
@ -65,10 +65,18 @@ module HomebrewArgvExtension
Keg.new(linked_keg_ref.resolved_path) Keg.new(linked_keg_ref.resolved_path)
elsif dirs.length == 1 elsif dirs.length == 1
Keg.new(dirs.first) Keg.new(dirs.first)
elsif (prefix = (name.include?("/") ? Formulary.factory(name) : Formulary.from_rack(rack)).prefix).directory?
Keg.new(prefix)
else else
raise MultipleVersionsInstalledError.new(rack.basename) f = if name.include?("/") || File.exist?(name)
Formulary.factory(name)
else
Formulary.from_rack(rack)
end
if (prefix = f.installed_prefix).directory?
Keg.new(prefix)
else
raise MultipleVersionsInstalledError.new(rack.basename)
end
end end
rescue FormulaUnavailableError rescue FormulaUnavailableError
raise <<-EOS.undent raise <<-EOS.undent