From 10ddb2ed974d351d8675216152c18f492e624af4 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Wed, 27 Jul 2016 15:30:17 -0600 Subject: [PATCH] utils: add API removal messaging methods. Add new `odeprecated` and `odisabled` methods to print API removal messages. Currently these are just used by things in `compat/`. --- Library/Homebrew/utils.rb | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index 86c83f9f91..928f25fc91 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -112,6 +112,40 @@ def odie(error) exit 1 end +def odeprecated(method, replacement = nil, options = {}) + verb = if options[:die] + "disabled" + else + "deprecated" + end + + replacement_message = if replacement + "Use #{replacement} instead." + else + "There is no replacement." + end + + # Show the first location that's not in compat. + backtrace = options[:caller] || caller + caller_message = backtrace[1] + + message = <<-EOS.undent + Calling #{method} is #{verb}! + #{replacement_message} + #{caller_message} + EOS + + if ARGV.homebrew_developer? || options[:die] + raise FormulaMethodDeprecatedError.new message + else + opoo "#{message}\n" + end +end + +def odisabled(method, replacement = nil, options = {}) + odeprecated(method, replacement, :die => true, :caller => caller) +end + def pretty_installed(f) if !$stdout.tty? "#{f}"