class VagrantVbguest::Command
Public Class Methods
synopsis()
click to toggle source
Show description when ‘vagrant list-commands` is triggered
# File lib/vagrant-vbguest/command.rb, line 77 def self.synopsis "plugin: vagrant-vbguest: install VirtualBox Guest Additions to the machine" end
Public Instance Methods
execute()
click to toggle source
Runs the vbguest installer on the VMs that are represented by this environment.
# File lib/vagrant-vbguest/command.rb, line 12 def execute options = { :_method => :run, :_rebootable => true, :auto_reboot => false } opts = OptionParser.new do |opts| opts.banner = "Usage: vagrant vbguest [vm-name] "\ "[--do start|rebuild|install] "\ "[--status] "\ "[-f|--force] "\ "[-b|--auto-reboot] "\ "[-R|--no-remote] "\ "[--iso VBoxGuestAdditions.iso] "\ "[--no-cleanup]" opts.separator "" opts.on("--do COMMAND", [:start, :rebuild, :install], "Manually `start`, `rebuild` or `install` GuestAdditions.") do |command| options[:_method] = command options[:force] = true end opts.on("--status", "Print current GuestAdditions status and exit.") do options[:_method] = :status options[:_rebootable] = false end opts.on("-f", "--force", "Whether to force the installation. (Implied by --do start|rebuild|install)") do options[:force] = true end opts.on("--auto-reboot", "-b", "Allow rebooting the VM after installation. (when GuestAdditions won't start)") do options[:auto_reboot] = true end opts.on("--no-remote", "-R", "Do not attempt do download the iso file from a webserver") do options[:no_remote] = true end opts.on("--iso file_or_uri", "Full path or URI to the VBoxGuestAdditions.iso") do |file_or_uri| options[:iso_path] = file_or_uri end opts.on("--no-cleanup", "Do not run cleanup tasks after installation. (for debugging)") do options[:no_cleanup] = true end build_start_options(opts, options) end argv = parse_options(opts) return if !argv if argv.empty? with_target_vms(nil) { |vm| execute_on_vm(vm, options) } else argv.each do |vm_name| with_target_vms(vm_name) { |vm| execute_on_vm(vm, options) } end end end
Protected Instance Methods
check_runable_on(vm)
click to toggle source
# File lib/vagrant-vbguest/command.rb, line 108 def check_runable_on(vm) raise Vagrant::Errors::VMNotCreatedError if vm.state.id == :not_created raise Vagrant::Errors::VMInaccessible if vm.state.id == :inaccessible raise Vagrant::Errors::VMNotRunningError if vm.state.id != :running raise VagrantVbguest::NoVirtualBoxMachineError if vm.provider.class != VagrantPlugins::ProviderVirtualBox::Provider end
execute_on_vm(vm, options)
click to toggle source
Executes a task on a specific VM.
@param vm [Vagrant::VM] @param options [Hash] Parsed options from the command line
# File lib/vagrant-vbguest/command.rb, line 87 def execute_on_vm(vm, options) check_runable_on(vm) options = options.clone _method = options.delete(:_method) _rebootable = options.delete(:_rebootable) options = vm.config.vbguest.to_hash.merge(options) machine = VagrantVbguest::Machine.new(vm, options) status = machine.state vm.env.ui.send((:ok == status ? :success : :warn), I18n.t("vagrant_vbguest.status.#{status}", **machine.info)) if _method != :status machine.send(_method) end reboot!(vm, options) if _rebootable && machine.reboot? rescue VagrantVbguest::Installer::NoInstallerFoundError => e vm.env.ui.error e.message end