aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/extend
diff options
context:
space:
mode:
authorVlad Shablinsky2015-08-09 14:56:01 +0300
committerMike McQuaid2015-08-10 13:57:59 +0100
commit6a0dcc83240d51f3f8473031cea6c571c5021130 (patch)
treee4788732c554e992d21b98c7ca8c3555003b3d24 /Library/Homebrew/extend
parent2cc6b9032965fed9e937da7b1c723e4b2cfd60a0 (diff)
downloadbrew-6a0dcc83240d51f3f8473031cea6c571c5021130.tar.bz2
don't use new name rack if old name rack is a dir
Everything that used HOMEBREW_CELLAR/canonical_name could point to something that doesn't exist because loader_for tries to load new name formula if no old name found. However there can be software installed from path with the same name that renamed formulae had and we still need to link/unlink/uninstall etc that software. The solution is Formulary#to_rack method that returns rack for given name. - Add Formulary#to_rack - Update ARGV.kegs - Update cmd/switch
Diffstat (limited to 'Library/Homebrew/extend')
-rw-r--r--Library/Homebrew/extend/ARGV.rb12
1 files changed, 6 insertions, 6 deletions
diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb
index 5a13230ac..66ff3dfd5 100644
--- a/Library/Homebrew/extend/ARGV.rb
+++ b/Library/Homebrew/extend/ARGV.rb
@@ -47,14 +47,14 @@ module HomebrewArgvExtension
require "keg"
require "formula"
@kegs ||= downcased_unique_named.collect do |name|
- canonical_name = Formulary.canonical_name(name)
- rack = HOMEBREW_CELLAR/canonical_name
+ rack = Formulary.to_rack(name)
+
dirs = rack.directory? ? rack.subdirs : []
- raise NoSuchKegError.new(canonical_name) if dirs.empty?
+ raise NoSuchKegError.new(rack.basename) if dirs.empty?
- linked_keg_ref = HOMEBREW_LIBRARY.join("LinkedKegs", canonical_name)
- opt_prefix = HOMEBREW_PREFIX.join("opt", canonical_name)
+ linked_keg_ref = HOMEBREW_LIBRARY.join("LinkedKegs", rack.basename)
+ opt_prefix = HOMEBREW_PREFIX.join("opt", rack.basename)
begin
if opt_prefix.symlink? && opt_prefix.directory?
@@ -66,7 +66,7 @@ module HomebrewArgvExtension
elsif (prefix = (name.include?("/") ? Formulary.factory(name) : Formulary.from_rack(rack)).prefix).directory?
Keg.new(prefix)
else
- raise MultipleVersionsInstalledError.new(canonical_name)
+ raise MultipleVersionsInstalledError.new(rack.basename)
end
rescue FormulaUnavailableError
raise <<-EOS.undent