aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Howell2010-03-09 02:09:46 +0000
committerAdam Vandenberg2010-08-07 18:08:49 -0700
commit28504229aa7a1389fa60bbfb9b987344d608e925 (patch)
tree0af87072cad0c5c23558511215905632de8647f5
parent2ac2dbb591b160baaa62322463014b797c6067eb (diff)
downloadbrew-28504229aa7a1389fa60bbfb9b987344d608e925.tar.bz2
Resolve aliases in ARGV extension.
* This allows most brew commands to automatically accept aliases.
-rw-r--r--Library/Homebrew/extend/ARGV.rb20
1 files changed, 16 insertions, 4 deletions
diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb
index e87048c0f..352f5d03d 100644
--- a/Library/Homebrew/extend/ARGV.rb
+++ b/Library/Homebrew/extend/ARGV.rb
@@ -6,21 +6,24 @@ module HomebrewArgvExtension
def named
@named ||= reject{|arg| arg[0..0] == '-'}
end
+
def options
select {|arg| arg[0..0] == '-'}
end
+
def formulae
require 'formula'
- @formulae ||= downcased_unique_named.collect {|name| Formula.factory name}
+ @formulae ||= downcased_unique_named.map{ |name| Formula.factory(resolve_alias(name)) }
raise FormulaUnspecifiedError if @formulae.empty?
@formulae
end
+
def kegs
require 'keg'
@kegs ||= downcased_unique_named.collect do |name|
- d=HOMEBREW_CELLAR+name
+ d = HOMEBREW_CELLAR + resolve_alias(name)
dirs = d.children.select{ |pn| pn.directory? } rescue []
- raise "#{name} is not installed" if not d.directory? or dirs.length == 0
+ raise "No such keg: #{HOMEBREW_CELLAR}/#{name}" if not d.directory? or dirs.length == 0
raise "#{name} has multiple installed versions" if dirs.length > 1
Keg.new dirs.first
end
@@ -102,6 +105,15 @@ module HomebrewArgvExtension
private
def downcased_unique_named
- @downcased_unique_named ||= named.collect{|arg| arg.downcase}.uniq
+ @downcased_unique_named ||= named.map(&:downcase).uniq
+ end
+
+ def resolve_alias name
+ aka = HOMEBREW_REPOSITORY+"Library/Aliases/#{name}"
+ if aka.file?
+ aka.realpath.basename('.rb').to_s
+ else
+ name
+ end
end
end