Merge pull request #7190 from vidusheeamoli/deprecate-method-formulae
Add DSL for formulae deprecation/disabling
This commit is contained in:
commit
c1708ff6b9
@ -35,7 +35,7 @@ rescue MissingEnvironmentVariables => e
|
||||
exec ENV["HOMEBREW_BREW_FILE"], *ARGV
|
||||
end
|
||||
|
||||
def head_unsupported_error
|
||||
def output_unsupported_error
|
||||
$stderr.puts <<~EOS
|
||||
Please create pull requests instead of asking for help on Homebrew's GitHub,
|
||||
Discourse, Twitter or IRC.
|
||||
@ -149,7 +149,7 @@ rescue BuildError => e
|
||||
Utils::Analytics.report_build_error(e)
|
||||
e.dump
|
||||
|
||||
head_unsupported_error if Homebrew.args.HEAD?
|
||||
output_unsupported_error if Homebrew.args.HEAD? || e.formula.deprecated? || e.formula.disabled?
|
||||
|
||||
exit 1
|
||||
rescue RuntimeError, SystemCallError => e
|
||||
@ -158,7 +158,7 @@ rescue RuntimeError, SystemCallError => e
|
||||
onoe e
|
||||
$stderr.puts e.backtrace if ARGV.debug?
|
||||
|
||||
head_unsupported_error if Homebrew.args.HEAD?
|
||||
output_unsupported_error if Homebrew.args.HEAD?
|
||||
|
||||
exit 1
|
||||
rescue MethodDeprecatedError => e
|
||||
|
@ -640,6 +640,20 @@ module Homebrew
|
||||
EOS
|
||||
end
|
||||
|
||||
def check_deprecated_disabled
|
||||
return unless HOMEBREW_CELLAR.exist?
|
||||
|
||||
deprecated_or_disabled = Formula.installed.select(&:deprecated?)
|
||||
deprecated_or_disabled += Formula.installed.select(&:disabled?)
|
||||
return if deprecated_or_disabled.empty?
|
||||
|
||||
<<~EOS
|
||||
Some installed formulae are deprecated or disabled.
|
||||
You should find replacements for the following formulae:
|
||||
#{deprecated_or_disabled.sort_by(&:full_name).uniq * "\n "}
|
||||
EOS
|
||||
end
|
||||
|
||||
def check_git_status
|
||||
return unless Utils.git_available?
|
||||
|
||||
|
@ -1105,6 +1105,20 @@ class Formula
|
||||
end
|
||||
end
|
||||
|
||||
# Whether this {Formula} is deprecated (i.e. warns on installation).
|
||||
# Defaults to false.
|
||||
# @return [Boolean]
|
||||
def deprecated?
|
||||
self.class.deprecated?
|
||||
end
|
||||
|
||||
# Whether this {Formula} is disabled (i.e. cannot be installed).
|
||||
# Defaults to false.
|
||||
# @return [Boolean]
|
||||
def disabled?
|
||||
self.class.disabled?
|
||||
end
|
||||
|
||||
def skip_cxxstdlib_check?
|
||||
false
|
||||
end
|
||||
@ -2605,6 +2619,34 @@ class Formula
|
||||
@pour_bottle_check.instance_eval(&block)
|
||||
end
|
||||
|
||||
# Deprecates a {Formula} so a warning is shown on each installation.
|
||||
def deprecate!(date: nil)
|
||||
return if date.present? && Date.parse(date) > Date.today
|
||||
|
||||
@deprecated = true
|
||||
end
|
||||
|
||||
# Whether this {Formula} is deprecated (i.e. warns on installation).
|
||||
# Defaults to false.
|
||||
# @return [Boolean]
|
||||
def deprecated?
|
||||
@deprecated == true
|
||||
end
|
||||
|
||||
# Disables a {Formula} so it cannot be installed.
|
||||
def disable!(date: nil)
|
||||
return if date.present? && Date.parse(date) > Date.today
|
||||
|
||||
@disabled = true
|
||||
end
|
||||
|
||||
# Whether this {Formula} is disabled (i.e. cannot be installed).
|
||||
# Defaults to false.
|
||||
# @return [Boolean]
|
||||
def disabled?
|
||||
@disabled == true
|
||||
end
|
||||
|
||||
# @private
|
||||
def link_overwrite(*paths)
|
||||
paths.flatten!
|
||||
|
@ -161,6 +161,12 @@ class FormulaInstaller
|
||||
def check_install_sanity
|
||||
raise FormulaInstallationAlreadyAttemptedError, formula if self.class.attempted.include?(formula)
|
||||
|
||||
if formula.deprecated?
|
||||
opoo "#{formula.full_name} has been deprecated!"
|
||||
elsif formula.disabled?
|
||||
odie "#{formula.full_name} has been disabled!"
|
||||
end
|
||||
|
||||
return if ignore_deps?
|
||||
|
||||
recursive_deps = formula.recursive_dependencies
|
||||
|
Loading…
x
Reference in New Issue
Block a user