diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb index a35ca0b49d..2eb6f8e2e1 100644 --- a/Library/Homebrew/brew.h.rb +++ b/Library/Homebrew/brew.h.rb @@ -39,9 +39,9 @@ def __make url, name raise "#{path} already exists" if path.exist? 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 - The formula #{realname} is already aliased to #{name} + "#{name}" is an alias for formula "#{realname}". Please check that you are not creating a duplicate. To force creation use --force. EOS @@ -430,8 +430,7 @@ def search_brews text # Filter out aliases when the full name was also found results.reject do |alias_name| if aliases.include? alias_name - resolved_name = (HOMEBREW_REPOSITORY+"Library/Aliases/#{alias_name}").readlink.basename('.rb').to_s - results.include? resolved_name + results.include? Formula.resolve_alias(alias_name) end end end diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index b52230d1e9..9c6aaf1f0c 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -13,15 +13,16 @@ module HomebrewArgvExtension def formulae 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? @formulae end def kegs require 'keg' + require 'formula' @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 [] 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 @@ -114,15 +115,6 @@ module HomebrewArgvExtension EOS 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 def downcased_unique_named diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index f8298624ce..ebc626a45f 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -266,6 +266,15 @@ class Formula Dir["#{HOMEBREW_REPOSITORY}/Library/Aliases/*"].map{ |f| File.basename f }.sort 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 return name if name.kind_of? Formula path = Pathname.new(name)