From 598c5e36f910d2e14bb77fd3ae5c2f0155e156bd Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Sat, 10 Dec 2016 13:04:14 +0000 Subject: [PATCH] Tell people to report URL/tap deprecations to the tap. Rather than Homebrew/brew or Homebrew/homebrew-core. --- Library/Homebrew/brew.rb | 8 ++++++++ Library/Homebrew/exceptions.rb | 4 +++- Library/Homebrew/formulary.rb | 12 ++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) 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 772f4c902b..01edcc0729 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