Refactor odeprecated
.
This commit is contained in:
parent
cb9187311e
commit
e6b45842e8
@ -135,6 +135,7 @@ rescue MethodDeprecatedError => e
|
|||||||
$stderr.puts "If reporting this issue please do so at (not Homebrew/brew or Homebrew/core):"
|
$stderr.puts "If reporting this issue please do so at (not Homebrew/brew or Homebrew/core):"
|
||||||
$stderr.puts " #{Formatter.url(e.issues_url)}"
|
$stderr.puts " #{Formatter.url(e.issues_url)}"
|
||||||
end
|
end
|
||||||
|
$stderr.puts e.backtrace if ARGV.debug?
|
||||||
exit 1
|
exit 1
|
||||||
rescue Exception => e # rubocop:disable Lint/RescueException
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
||||||
onoe e
|
onoe e
|
||||||
|
@ -154,7 +154,7 @@ module Hbc
|
|||||||
|
|
||||||
Tap.default_cask_tap.install unless Tap.default_cask_tap.installed?
|
Tap.default_cask_tap.install unless Tap.default_cask_tap.installed?
|
||||||
self.class.run_command(command, *args)
|
self.class.run_command(command, *args)
|
||||||
rescue CaskError, ArgumentError, OptionParser::InvalidOption => e
|
rescue CaskError, MethodDeprecatedError, ArgumentError, OptionParser::InvalidOption => e
|
||||||
msg = e.message
|
msg = e.message
|
||||||
msg << e.backtrace.join("\n").prepend("\n") if ARGV.debug?
|
msg << e.backtrace.join("\n").prepend("\n") if ARGV.debug?
|
||||||
onoe msg
|
onoe msg
|
||||||
|
@ -253,7 +253,7 @@ describe "globally-scoped helper methods" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "#odeprecated" do
|
describe "#odeprecated" do
|
||||||
it "raises a MethodDeprecatedError" do
|
it "raises a MethodDeprecatedError when `disable` is true" do
|
||||||
ENV.delete("HOMEBREW_DEVELOPER")
|
ENV.delete("HOMEBREW_DEVELOPER")
|
||||||
expect {
|
expect {
|
||||||
odeprecated(
|
odeprecated(
|
||||||
@ -261,7 +261,7 @@ describe "globally-scoped helper methods" do
|
|||||||
caller: ["#{HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-core/"],
|
caller: ["#{HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-core/"],
|
||||||
disable: true
|
disable: true
|
||||||
)
|
)
|
||||||
}.to raise_error(MethodDeprecatedError, %r{method.*replacement.*homebrew/homebrew-core.*homebrew/core}m)
|
}.to raise_error(MethodDeprecatedError, %r{method.*replacement.*homebrew/core.*\/Taps\/homebrew\/homebrew-core\/}m)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ require "utils/link"
|
|||||||
require "utils/popen"
|
require "utils/popen"
|
||||||
require "utils/svn"
|
require "utils/svn"
|
||||||
require "utils/tty"
|
require "utils/tty"
|
||||||
|
require "tap_constants"
|
||||||
require "time"
|
require "time"
|
||||||
|
|
||||||
def require?(path)
|
def require?(path)
|
||||||
@ -86,7 +87,6 @@ def odeprecated(method, replacement = nil, disable: false, disable_on: nil, call
|
|||||||
# - Location outside of 'compat/'.
|
# - Location outside of 'compat/'.
|
||||||
# - Location of caller of deprecated method (if all else fails).
|
# - Location of caller of deprecated method (if all else fails).
|
||||||
backtrace = caller
|
backtrace = caller
|
||||||
tap_message = nil
|
|
||||||
|
|
||||||
# Don't throw deprecations at all for cached, .brew or .metadata files.
|
# Don't throw deprecations at all for cached, .brew or .metadata files.
|
||||||
return if backtrace.any? do |line|
|
return if backtrace.any? do |line|
|
||||||
@ -95,31 +95,26 @@ def odeprecated(method, replacement = nil, disable: false, disable_on: nil, call
|
|||||||
line.include?("/.metadata/")
|
line.include?("/.metadata/")
|
||||||
end
|
end
|
||||||
|
|
||||||
caller_message = backtrace.detect do |line|
|
tap_message = nil
|
||||||
next unless line =~ %r{^#{Regexp.escape(HOMEBREW_LIBRARY)}/Taps/([^/]+/[^/]+)/}
|
|
||||||
tap = Tap.fetch Regexp.last_match(1)
|
|
||||||
tap_message = "\nPlease report this to the #{tap} tap!"
|
|
||||||
true
|
|
||||||
end
|
|
||||||
caller_message ||= backtrace.detect do |line|
|
|
||||||
!line.start_with?("#{HOMEBREW_LIBRARY_PATH}/compat/")
|
|
||||||
end
|
|
||||||
caller_message ||= backtrace[1]
|
|
||||||
|
|
||||||
message = <<~EOS
|
backtrace.each do |line|
|
||||||
Calling #{method} is #{verb}!
|
next unless match = line.match(HOMEBREW_TAP_PATH_REGEX)
|
||||||
#{replacement_message}
|
tap = Tap.fetch(match[:user], match[:repo])
|
||||||
#{caller_message}#{tap_message}
|
tap_message = "\nPlease report this to the #{tap} tap"
|
||||||
EOS
|
tap_message += ", or even better, submit a PR to fix it" if replacement
|
||||||
|
tap_message << ":\n #{line.sub(/^(.*\:\d+)\:.*$/, '\1')}\n\n"
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
if ARGV.homebrew_developer? || disable ||
|
message = "Calling #{method} is #{verb}! #{replacement_message}"
|
||||||
Homebrew.raise_deprecation_exceptions?
|
message << tap_message if tap_message
|
||||||
if replacement || tap_message
|
|
||||||
message += "Or, even better, submit a PR to fix it!"
|
if ARGV.homebrew_developer? || disable || Homebrew.raise_deprecation_exceptions?
|
||||||
end
|
exception = MethodDeprecatedError.new(message)
|
||||||
raise MethodDeprecatedError, message
|
exception.set_backtrace(backtrace)
|
||||||
|
raise exception
|
||||||
elsif !Homebrew.auditing?
|
elsif !Homebrew.auditing?
|
||||||
opoo "#{message}\n"
|
opoo message
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user