vagrant/plugins/commands/list-commands/command.rb

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