Mitchell Hashimoto 1d7e02cd63 Build up some operations that can be run.
These are heavily inspired by Fabric! Thanks!
2012-05-05 19:28:50 -07:00

47 lines
1.2 KiB
Ruby

require "log4r"
module Vagrant
module EasyCommand
# Base class for all easy commands. This contains the basic code
# that knows how to run the easy commands.
class Base < Vagrant::Command::Base
@@command = nil
@@runner = nil
# This is called by the {EasyCommand.create} method when creating
# an easy command to set the invocation command.
def self.configure(name, &block)
@@command = name
@@runner = block
end
def initialize(*args, &block)
super
@logger = Log4r::Logger.new("vagrant::easy_command::#{@@command}")
end
def execute
# Build up a basic little option parser
opts = OptionParser.new do |opts|
opts.banner = "Usage: vagrant #{@@command}"
end
# Parse the options
argv = parse_options(opts)
return if !argv
# Run the action for each VM.
@logger.info("Running easy command: #{@@command}")
with_target_vms(argv) do |vm|
@logger.debug("Running easy command for VM: #{vm.name}")
@@runner.call(Operations.new(vm))
end
# Exit status 0 every time for now
0
end
end
end
end