Initial plugin command plugin
This commit is contained in:
parent
b3571eb5bb
commit
db2e27bab6
|
@ -0,0 +1,56 @@
|
|||
require 'optparse'
|
||||
|
||||
module VagrantPlugins
|
||||
module CommandPlugin
|
||||
module Command
|
||||
class Root < Vagrant.plugin("2", :command)
|
||||
def initialize(argv, env)
|
||||
super
|
||||
|
||||
@main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
|
||||
|
||||
@subcommands = Vagrant::Registry.new
|
||||
end
|
||||
|
||||
def execute
|
||||
if @main_args.include?("-h") || @main_args.include?("--help")
|
||||
# Print the help for all the sub-commands.
|
||||
return help
|
||||
end
|
||||
|
||||
# If we reached this far then we must have a subcommand. If not,
|
||||
# then we also just print the help and exit.
|
||||
command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
|
||||
return help if !command_class || !@sub_command
|
||||
@logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
|
||||
|
||||
# Initialize and execute the command class
|
||||
command_class.new(@sub_args, @env).execute
|
||||
end
|
||||
|
||||
# Prints the help out for this command
|
||||
def help
|
||||
opts = OptionParser.new do |o|
|
||||
o.banner = "Usage: vagrant plugin <command> [<args>]"
|
||||
o.separator ""
|
||||
o.separator "Available subcommands:"
|
||||
|
||||
# Add the available subcommands as separators in order to print them
|
||||
# out as well.
|
||||
keys = []
|
||||
@subcommands.each { |key, value| keys << key.to_s }
|
||||
|
||||
keys.sort.each do |key|
|
||||
o.separator " #{key}"
|
||||
end
|
||||
|
||||
o.separator ""
|
||||
o.separator "For help on any individual command run `vagrant plugin COMMAND -h`"
|
||||
end
|
||||
|
||||
@env.ui.info(opts.help, :prefix => false)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,18 @@
|
|||
require "vagrant"
|
||||
|
||||
module VagrantPlugins
|
||||
module CommandPlugin
|
||||
class Plugin < Vagrant.plugin("2")
|
||||
name "plugin command"
|
||||
description <<-DESC
|
||||
This command helps manage and install plugins within the
|
||||
Vagrant environment.
|
||||
DESC
|
||||
|
||||
command("plugin") do
|
||||
require File.expand_path("../command/root", __FILE__)
|
||||
Command::Root
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue