diff --git a/Library/Homebrew/brew.rb b/Library/Homebrew/brew.rb index ac35feee87..ba43e65c4e 100644 --- a/Library/Homebrew/brew.rb +++ b/Library/Homebrew/brew.rb @@ -138,6 +138,14 @@ rescue RuntimeError, SystemCallError => e onoe e $stderr.puts e.backtrace if ARGV.debug? exit 1 +rescue MethodDeprecatedError => e + Utils::Analytics.report_exception(e) + onoe e + if e.issues_url + $stderr.puts "If reporting this issue please do so at (not Homebrew/brew or Homebrew/core):" + $stderr.puts " #{Formatter.url(e.issues_url)}" + end + exit 1 rescue Exception => e Utils::Analytics.report_exception(e) onoe e diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index c2b78f8787..c5d888d644 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -56,7 +56,9 @@ end class FormulaSpecificationError < StandardError; end -class MethodDeprecatedError < StandardError; end +class MethodDeprecatedError < StandardError + attr_accessor :issues_url +end class FormulaUnavailableError < RuntimeError attr_reader :name diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb index 8d9633e3cc..6ed5b91ba7 100644 --- a/Library/Homebrew/formulary.rb +++ b/Library/Homebrew/formulary.rb @@ -151,6 +151,11 @@ class Formulary FileUtils.rm_f(path) curl url, "-o", path super + rescue MethodDeprecatedError => e + if url =~ %r{github.com/([\w-]+)/homebrew-([\w-]+)/} + e.issues_url = "https://github.com/#{$1}/homebrew-#{$2}/issues/new" + end + raise end end @@ -202,6 +207,13 @@ class Formulary rescue FormulaUnavailableError => e raise TapFormulaUnavailableError.new(tap, name), "", e.backtrace end + + def load_file + super + rescue MethodDeprecatedError => e + e.issues_url = formula.tap.issues_url || formula.tap.to_s + raise + end end class NullLoader < FormulaLoader