From 3872f78d666ab6ed765773907cdbd84cdb5e28ad Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Fri, 28 Feb 2014 15:58:20 -0600 Subject: [PATCH] Add custom exception for untapped formulae --- Library/Homebrew/exceptions.rb | 25 +++++++++++++++++-------- Library/Homebrew/formulary.rb | 4 +++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index 6829c17a9d..73812b3558 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -39,22 +39,31 @@ class FormulaUnavailableError < RuntimeError attr_reader :name attr_accessor :dependent + def initialize name + @name = name + end + def dependent_s "(dependency of #{dependent})" if dependent and dependent != name end def to_s - if name =~ HOMEBREW_TAP_FORMULA_REGEX then <<-EOS.undent - No available formula for #$3 #{dependent_s} - Please tap it and then try again: brew tap #$1/#$2 - EOS - else - "No available formula for #{name} #{dependent_s}" - end + "No available formula for #{name} #{dependent_s}" end +end + +class TapFormulaUnavailableError < FormulaUnavailableError + attr_reader :user, :repo, :shortname def initialize name - @name = name + super + @user, @repo, @shortname = name.split("/", 3) + end + + def to_s; <<-EOS.undent + No available formula for #{shortname} #{dependent_s} + Please tap it and then try again: brew tap #{user}/#{repo} + EOS end end diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb index 30fcae485b..7f6c566adc 100644 --- a/Library/Homebrew/formulary.rb +++ b/Library/Homebrew/formulary.rb @@ -155,7 +155,9 @@ class Formulary end def get_formula - klass.new(tapped_name, path) + klass.new(name, path) + rescue FormulaUnavailableError => e + raise TapFormulaUnavailableError.new(e.name) end end