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
|
def named
|
||||||
@named ||= reject{|arg| arg[0..0] == '-'}
|
@named ||= reject{|arg| arg[0..0] == '-'}
|
||||||
end
|
end
|
||||||
|
|
||||||
def options
|
def options
|
||||||
select {|arg| arg[0..0] == '-'}
|
select {|arg| arg[0..0] == '-'}
|
||||||
end
|
end
|
||||||
|
|
||||||
def formulae
|
def formulae
|
||||||
require 'formula'
|
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?
|
raise FormulaUnspecifiedError if @formulae.empty?
|
||||||
@formulae
|
@formulae
|
||||||
end
|
end
|
||||||
|
|
||||||
def kegs
|
def kegs
|
||||||
require 'keg'
|
require 'keg'
|
||||||
@kegs ||= downcased_unique_named.collect do |name|
|
@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 []
|
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
|
raise "#{name} has multiple installed versions" if dirs.length > 1
|
||||||
Keg.new dirs.first
|
Keg.new dirs.first
|
||||||
end
|
end
|
||||||
@ -102,6 +105,15 @@ module HomebrewArgvExtension
|
|||||||
private
|
private
|
||||||
|
|
||||||
def downcased_unique_named
|
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
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user