Resolve aliases in ARGV extension.

* This allows most brew commands to automatically accept aliases.
This commit is contained in:
Max Howell 2010-03-09 02:09:46 +00:00 committed by Adam Vandenberg
parent 2ac2dbb591
commit 28504229aa

View File

@ -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