2010-08-25 13:33:31 -07:00

52 lines
1.3 KiB
Ruby

module Vagrant
module Command
class StatusCommand < Base
desc "Shows the status of the current Vagrant environment."
argument :name, :type => :string, :optional => true
register "status"
def route
require_environment
return show_multivm if target_vms.length > 1
show_single(target_vms.first)
end
protected
def show_multivm
puts Util::Translator.t(:status_listing)
puts ""
env.vms.each do |name, vm|
state = vm.created? ? vm.vm.state : "not created"
puts "#{name.to_s.ljust(30)}#{state}"
end
end
def show_single(vm)
string_key = nil
if !vm.created?
string_key = :status_not_created
else
additional_key = nil
if vm.vm.running?
additional_key = :status_created_running
elsif vm.vm.saved?
additional_key = :status_created_saved
elsif vm.vm.powered_off?
additional_key = :status_created_powered_off
end
string_key = [:status_created, {
:vm_state => vm.vm.state,
:additional_message => additional_key ? Util::Translator.t(additional_key) : ""
}]
end
puts Util::Translator.t(*string_key)
end
end
end
end