aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Hileman2011-09-01 16:14:45 -0700
committerMax Howell2011-09-02 12:12:30 +0100
commit8f3a74993b3eec0e9f70b1b7d3903c2ca710ec5e (patch)
treea82d99fcee98a848b5d2af6a761c8d610384c7a6
parent34aea5c987705b43f8fff72e683d24c248156c4f (diff)
downloadbrew-8f3a74993b3eec0e9f70b1b7d3903c2ca710ec5e.tar.bz2
Allow 'brew link' to work with URL-based formulae
Closes Homebrew/homebrew#7373. Signed-off-by: Max Howell <max@methylblue.com> I added some comments.
-rw-r--r--Library/Homebrew/extend/ARGV.rb13
1 files changed, 10 insertions, 3 deletions
diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb
index 3fef2dcd0..3efd18f73 100644
--- a/Library/Homebrew/extend/ARGV.rb
+++ b/Library/Homebrew/extend/ARGV.rb
@@ -18,9 +18,16 @@ module HomebrewArgvExtension
require 'keg'
require 'formula'
@kegs ||= downcased_unique_named.collect do |name|
- d = HOMEBREW_CELLAR+Formula.canonical_name(name)
- dirs = d.children.select{ |pn| pn.directory? } rescue []
- raise NoSuchKegError.new(name) if not d.directory? or dirs.length == 0
+ n = Formula.canonical_name(name)
+ rack = HOMEBREW_CELLAR + if n.include? "/"
+ # canonical_name returns a path if it was a formula installed via a
+ # URL. And we only want the name. FIXME that function is insane.
+ Pathname.new(n).stem
+ else
+ n
+ end
+ dirs = rack.children.select{ |pn| pn.directory? } rescue []
+ raise NoSuchKegError.new(name) if not rack.directory? or dirs.length == 0
raise MultipleVersionsInstalledError.new(name) if dirs.length > 1
Keg.new dirs.first
end