57 lines
1.5 KiB
Ruby
57 lines
1.5 KiB
Ruby
module Vagrant
|
|
module Util
|
|
# Automatically add deprecation notices to commands
|
|
module CommandDeprecation
|
|
|
|
# @return [String] generated name of command
|
|
def deprecation_command_name
|
|
name_parts = self.class.name.split("::")
|
|
[
|
|
name_parts[1].sub('Command', ''),
|
|
name_parts[3]
|
|
].compact.map(&:downcase).join(" ")
|
|
end
|
|
|
|
def self.included(klass)
|
|
klass.class_eval do
|
|
class << self
|
|
if method_defined?(:synopsis)
|
|
alias_method :non_deprecated_synopsis, :synopsis
|
|
|
|
def synopsis
|
|
if !non_deprecated_synopsis.to_s.empty?
|
|
"#{non_deprecated_synopsis} [DEPRECATED]"
|
|
else
|
|
non_deprecated_synopsis
|
|
end
|
|
end
|
|
end
|
|
end
|
|
alias_method :non_deprecated_execute, :execute
|
|
|
|
def execute(*args, &block)
|
|
@env[:ui].warn(I18n.t("vagrant.commands.deprecated",
|
|
name: deprecation_command_name
|
|
) + "\n")
|
|
non_deprecated_execute(*args, &block)
|
|
end
|
|
end
|
|
end
|
|
|
|
# Mark command deprecation complete and fully disable
|
|
# the command's functionality
|
|
module Complete
|
|
def self.included(klass)
|
|
klass.include(CommandDeprecation)
|
|
klass.class_eval do
|
|
def execute(*_)
|
|
raise Vagrant::Errors::CommandDeprecated,
|
|
name: deprecation_command_name
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|