Resolve aliases in ARGV extension.
* This allows most brew commands to automatically accept aliases.
This commit is contained in:
parent
2ac2dbb591
commit
28504229aa
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user