Move resolve_alias from ARGV to Formula

Also, call this function from a few places where the code was duplicated.
This commit is contained in:
Adam Vandenberg 2010-09-22 12:32:16 -07:00
parent 18f9969b65
commit bb01afce4c
3 changed files with 15 additions and 15 deletions

View File

@ -39,9 +39,9 @@ def __make url, name
raise "#{path} already exists" if path.exist? raise "#{path} already exists" if path.exist?
if Formula.aliases.include? name and not ARGV.force? if Formula.aliases.include? name and not ARGV.force?
realname = HOMEBREW_REPOSITORY.join("Library/Aliases/#{name}").realpath.basename('.rb') realname = Formula.resolve_alias(name)
raise <<-EOS.undent raise <<-EOS.undent
The formula #{realname} is already aliased to #{name} "#{name}" is an alias for formula "#{realname}".
Please check that you are not creating a duplicate. Please check that you are not creating a duplicate.
To force creation use --force. To force creation use --force.
EOS EOS
@ -430,8 +430,7 @@ def search_brews text
# Filter out aliases when the full name was also found # Filter out aliases when the full name was also found
results.reject do |alias_name| results.reject do |alias_name|
if aliases.include? alias_name if aliases.include? alias_name
resolved_name = (HOMEBREW_REPOSITORY+"Library/Aliases/#{alias_name}").readlink.basename('.rb').to_s results.include? Formula.resolve_alias(alias_name)
results.include? resolved_name
end end
end end
end end

View File

@ -13,15 +13,16 @@ module HomebrewArgvExtension
def formulae def formulae
require 'formula' require 'formula'
@formulae ||= downcased_unique_named.map{ |name| Formula.factory(resolve_alias(name)) } @formulae ||= downcased_unique_named.map{ |name| Formula.factory(Formula.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'
require 'formula'
@kegs ||= downcased_unique_named.collect do |name| @kegs ||= downcased_unique_named.collect do |name|
d = HOMEBREW_CELLAR + resolve_alias(name) d = HOMEBREW_CELLAR + Formula.resolve_alias(name)
dirs = d.children.select{ |pn| pn.directory? } rescue [] dirs = d.children.select{ |pn| pn.directory? } rescue []
raise "No such keg: #{HOMEBREW_CELLAR}/#{name}" 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
@ -114,15 +115,6 @@ module HomebrewArgvExtension
EOS EOS
end end
def resolve_alias name
aka = HOMEBREW_REPOSITORY+"Library/Aliases/#{name}"
if aka.file?
aka.realpath.basename('.rb').to_s
else
name
end
end
private private
def downcased_unique_named def downcased_unique_named

View File

@ -266,6 +266,15 @@ class Formula
Dir["#{HOMEBREW_REPOSITORY}/Library/Aliases/*"].map{ |f| File.basename f }.sort Dir["#{HOMEBREW_REPOSITORY}/Library/Aliases/*"].map{ |f| File.basename f }.sort
end end
def self.resolve_alias name
aka = HOMEBREW_REPOSITORY+"Library/Aliases/#{name}"
if aka.file?
aka.realpath.basename('.rb').to_s
else
name
end
end
def self.factory name def self.factory name
return name if name.kind_of? Formula return name if name.kind_of? Formula
path = Pathname.new(name) path = Pathname.new(name)