44 lines
1.2 KiB
Ruby
44 lines
1.2 KiB
Ruby
require "optparse"
|
|
|
|
module VagrantPlugins
|
|
module CommandListCommands
|
|
class Command < Vagrant.plugin("2", :command)
|
|
def self.synopsis
|
|
"outputs all available Vagrant subcommands, even non-primary ones"
|
|
end
|
|
|
|
def execute
|
|
opts = OptionParser.new do |o|
|
|
o.banner = "Usage: vagrant list-commands"
|
|
end
|
|
|
|
argv = parse_options(opts)
|
|
return if !argv
|
|
|
|
# Add the available subcommands as separators in order to print them
|
|
# out as well.
|
|
commands = {}
|
|
longest = 0
|
|
Vagrant.plugin("2").manager.commands.each do |key, data|
|
|
key = key.to_s
|
|
klass = data[0].call
|
|
commands[key] = klass.synopsis
|
|
longest = key.length if key.length > longest
|
|
end
|
|
|
|
command_output = []
|
|
commands.keys.sort.each do |key|
|
|
command_output << "#{key.ljust(longest+2)} #{commands[key]}"
|
|
@env.ui.machine("cli-command", key.dup)
|
|
end
|
|
|
|
@env.ui.info(
|
|
I18n.t("vagrant.list_commands", list: command_output.join("\n")))
|
|
|
|
# Success, exit status 0
|
|
0
|
|
end
|
|
end
|
|
end
|
|
end
|