47 lines
1.2 KiB
Ruby
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
|