diff options
| author | Jack Nagel | 2014-02-28 15:58:20 -0600 |
|---|---|---|
| committer | Jack Nagel | 2014-02-28 15:58:20 -0600 |
| commit | 7c462c64db9309b8ab84a86af47d42ef59535bd2 (patch) | |
| tree | d701e7a13d6a34e2a29d93584f23bf4137d9e2a2 | |
| parent | 618c909f55cbeebefb2ee07d5ab124640d404def (diff) | |
| download | homebrew-7c462c64db9309b8ab84a86af47d42ef59535bd2.tar.bz2 | |
Add custom exception for untapped formulae
| -rw-r--r-- | Library/Homebrew/exceptions.rb | 25 | ||||
| -rw-r--r-- | 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 6829c17a9..73812b355 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 30fcae485..7f6c566ad 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 |
