From 28504229aa7a1389fa60bbfb9b987344d608e925 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Tue, 9 Mar 2010 02:09:46 +0000 Subject: [PATCH] Resolve aliases in ARGV extension. * This allows most brew commands to automatically accept aliases. --- Library/Homebrew/extend/ARGV.rb | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index e87048c0fb..352f5d03d7 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