Add option to disable methods on specific date.
This commit is contained in:
parent
4ca2eaf8df
commit
0f8cb4ba27
@ -216,7 +216,7 @@ class UtilTests < Homebrew::TestCase
|
|||||||
e = assert_raises(MethodDeprecatedError) do
|
e = assert_raises(MethodDeprecatedError) do
|
||||||
odeprecated("method", "replacement",
|
odeprecated("method", "replacement",
|
||||||
caller: ["#{HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-core/"],
|
caller: ["#{HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-core/"],
|
||||||
die: true)
|
disable: true)
|
||||||
end
|
end
|
||||||
assert_match "method", e.message
|
assert_match "method", e.message
|
||||||
assert_match "replacement", e.message
|
assert_match "replacement", e.message
|
||||||
|
|||||||
@ -11,6 +11,7 @@ require "utils/hash"
|
|||||||
require "utils/inreplace"
|
require "utils/inreplace"
|
||||||
require "utils/popen"
|
require "utils/popen"
|
||||||
require "utils/tty"
|
require "utils/tty"
|
||||||
|
require "time"
|
||||||
|
|
||||||
def ohai(title, *sput)
|
def ohai(title, *sput)
|
||||||
title = Tty.truncate(title) if $stdout.tty? && !ARGV.verbose?
|
title = Tty.truncate(title) if $stdout.tty? && !ARGV.verbose?
|
||||||
@ -44,24 +45,32 @@ def odie(error)
|
|||||||
exit 1
|
exit 1
|
||||||
end
|
end
|
||||||
|
|
||||||
def odeprecated(method, replacement = nil, options = {})
|
def odeprecated(method, replacement = nil, disable: false, disable_on: nil, caller: send(:caller))
|
||||||
verb = if options[:die]
|
|
||||||
"disabled"
|
|
||||||
else
|
|
||||||
"deprecated"
|
|
||||||
end
|
|
||||||
|
|
||||||
replacement_message = if replacement
|
replacement_message = if replacement
|
||||||
"Use #{replacement} instead."
|
"Use #{replacement} instead."
|
||||||
else
|
else
|
||||||
"There is no replacement."
|
"There is no replacement."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
unless disable_on.nil?
|
||||||
|
if disable_on > Time.now
|
||||||
|
will_be_disabled_message = " and will be disabled on #{disable_on.strftime("%Y-%m-%d")}"
|
||||||
|
else
|
||||||
|
disable = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
verb = if disable
|
||||||
|
"disabled"
|
||||||
|
else
|
||||||
|
"deprecated#{will_be_disabled_message}"
|
||||||
|
end
|
||||||
|
|
||||||
# Try to show the most relevant location in message, i.e. (if applicable):
|
# Try to show the most relevant location in message, i.e. (if applicable):
|
||||||
# - Location in a formula.
|
# - Location in a formula.
|
||||||
# - 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 = options.fetch(:caller, caller)
|
backtrace = caller
|
||||||
tap_message = nil
|
tap_message = nil
|
||||||
caller_message = backtrace.detect do |line|
|
caller_message = backtrace.detect do |line|
|
||||||
next unless line =~ %r{^#{Regexp.escape HOMEBREW_LIBRARY}/Taps/([^/]+/[^/]+)/}
|
next unless line =~ %r{^#{Regexp.escape HOMEBREW_LIBRARY}/Taps/([^/]+/[^/]+)/}
|
||||||
@ -80,7 +89,7 @@ def odeprecated(method, replacement = nil, options = {})
|
|||||||
#{caller_message}#{tap_message}
|
#{caller_message}#{tap_message}
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
if ARGV.homebrew_developer? || options[:die] ||
|
if ARGV.homebrew_developer? || disable ||
|
||||||
Homebrew.raise_deprecation_exceptions?
|
Homebrew.raise_deprecation_exceptions?
|
||||||
raise MethodDeprecatedError, message
|
raise MethodDeprecatedError, message
|
||||||
else
|
else
|
||||||
@ -89,7 +98,7 @@ def odeprecated(method, replacement = nil, options = {})
|
|||||||
end
|
end
|
||||||
|
|
||||||
def odisabled(method, replacement = nil, options = {})
|
def odisabled(method, replacement = nil, options = {})
|
||||||
options = { die: true, caller: caller }.merge(options)
|
options = { disable: true, caller: caller }.merge(options)
|
||||||
odeprecated(method, replacement, options)
|
odeprecated(method, replacement, options)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user