A very basic `vagrant status` command, which simply outputs the status of the environment (whether it has been created, its on, its off, etc.)

This commit is contained in:
Mitchell Hashimoto 2010-03-14 18:35:18 -07:00
parent f6057bf80a
commit 42007f6b80
2 changed files with 72 additions and 0 deletions

29
bin/vagrant-status Executable file
View File

@ -0,0 +1,29 @@
#!/usr/bin/env ruby
begin
require File.expand_path('../../.bundle/environment', __FILE__)
rescue LoadError
# Fallback on rubygems
require "rubygems"
end
require 'git-style-binary/command'
# Get library
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
require File.expand_path('vagrant', libdir)
GitStyleBinary.command do
short_desc "Outputs the status of the current environment"
banner <<-EOS
Usage: #{command.full_name} #{all_options_string}
This command outputs the status of the current environment. This command
tells you whether the environment is created, running, suspended,
etc.
EOS
run do |command|
Vagrant::Commands.status
end
end

View File

@ -24,6 +24,49 @@ error
FileUtils.cp(File.join(PROJECT_ROOT, "templates", Env::ROOTFILE_NAME), rootfile_path)
end
# Outputs the status of the current environment. This command outputs
# useful information such as whether or not the environment is created
# and if its running, suspended, etc.
def status
Env.load!
wrap_output do
if !Env.persisted_vm
puts <<-msg
The environment has not yet been created. Run `vagrant up` to create the
environment.
msg
else
additional_msg = ""
if Env.persisted_vm.vm.running?
additional_msg = <<-msg
To stop this VM, you can run `vagrant halt` to shut it down forcefully,
or you can run `vagrant suspend` to simply suspend the virtual machine.
In either case, to restart it again, simply run a `vagrant up`.
msg
elsif Env.persisted_vm.vm.saved?
additional_msg = <<-msg
To resume this VM, simply run `vagrant up`.
msg
elsif Env.persisted_vm.vm.powered_off?
additional_msg = <<-msg
To restart this VM, simply run `vagrant up`.
msg
end
if !additional_msg.empty?
additional_msg.chomp!
additional_msg = "\n\n#{additional_msg}"
end
puts <<-msg
The environment has been created. The status of the current environment's
virtual machine is: "#{Env.persisted_vm.vm.state}."#{additional_msg}
msg
end
end
end
# Bring up a vagrant instance. This handles everything from importing
# the base VM, setting up shared folders, forwarded ports, etc to
# provisioning the instance with chef. {up} also starts the instance,