`vagrant init` command. Used for initializing directories with vagrant.

This commit is contained in:
Mitchell Hashimoto 2010-02-11 00:51:21 -08:00
parent fef985009f
commit 7ff428d5c2
4 changed files with 40 additions and 2 deletions

3
.gitignore vendored
View File

@ -4,4 +4,5 @@ Vagrantfile
.bundle
*.lock
cookbooks/*
_site/*
_site/*
!templates/*

View File

@ -7,9 +7,21 @@ module Vagrant
extend Vagrant::Util
class <<self
# TODO: Coming soon to a theatre near you.
# Initializes a directory for use with vagrant. This command copies an
# initial `Vagrantfile` into the current working directory so you can
# begin using vagrant. The configuration file contains some documentation
# to get you started.
def init
rootfile_path = File.join(Dir.pwd, Env::ROOTFILE_NAME)
if File.exist?(rootfile_path)
error_and_exit(<<-error)
It looks like this directory is already setup for vagrant! (A #{Env::ROOTFILE_NAME}
already exists.)
error
end
# Copy over the rootfile template into this directory
File.copy(File.join(PROJECT_ROOT, "templates", Env::ROOTFILE_NAME), rootfile_path)
end
# Bring up a vagrant instance. This handles everything from importing

5
templates/Vagrantfile vendored Normal file
View File

@ -0,0 +1,5 @@
Vagrant::Config.run do |config|
# All Vagrant configuration is done here. For a detailed explanation
# and listing of configuration options, please check the documentation
# online.
end

View File

@ -8,6 +8,26 @@ class CommandsTest < Test::Unit::TestCase
Vagrant::Env.stubs(:persisted_vm).returns(@persisted_vm)
end
context "init" do
setup do
File.stubs(:copy)
@rootfile_path = File.join(Dir.pwd, Vagrant::Env::ROOTFILE_NAME)
@template_path = File.join(PROJECT_ROOT, "templates", Vagrant::Env::ROOTFILE_NAME)
end
should "error and exit if a rootfile already exists" do
File.expects(:exist?).with(@rootfile_path).returns(true)
Vagrant::Commands.expects(:error_and_exit).once
Vagrant::Commands.init
end
should "copy the templated rootfile to the current path" do
File.expects(:exist?).with(@rootfile_path).returns(false)
File.expects(:copy).with(@template_path, @rootfile_path).once
Vagrant::Commands.init
end
end
context "up" do
setup do
Vagrant::Env.stubs(:persisted_vm).returns(nil)