vagrantup 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0498f2d6ea2c99f945c5b90b0f116a00c48e012c
4
- data.tar.gz: 92f17a71fedf33baa00a1478fe6d5fa2185e0443
3
+ metadata.gz: ffd836a15024ed281e1843a1d9641c8f2d8c12e6
4
+ data.tar.gz: d44a4add3767e321e8a58a111be37258912c7c24
5
5
  SHA512:
6
- metadata.gz: 3b046741291cccfef50bb9344970e6443c0c5678000c42aae7c735e5a6f72c7d920465bf9eed1958ba496622b72b4dbbdd24e8ae7cd1b36769f45209cf61d82a
7
- data.tar.gz: efe2af3c44ea4d6716dead407c3b8e2e9fa9fb46fffbdc826d1c23f15be3d72f383d94a949181fa50d0abf35a52eca6b836567c46c9ec96b67ded33f138a14cc
6
+ metadata.gz: c915f5739663561b7434c2c4bbf0c265b22fdb758e86d7caf4d621bf465b94475c6f5a749243ffde3f9c709a94f6da38a02f41eee0b8f08436506c2487bf9b1a
7
+ data.tar.gz: a08b020df05c86b6c4eef07b4bb7810f08c9188c449593f1e4c599e7e6b1df40637749e323b7dcaa0a07110e3f9a2929c735e661e2a893f762767e6f5dde0e0c
data/Gemfile CHANGED
@@ -6,7 +6,7 @@ gem "net-ssh", ">= 2.0.19"
6
6
  gem "net-scp", ">= 1.0.2"
7
7
  gem "git-style-binaries", ">= 0.1.10"
8
8
  gem "json", ">= 1.2.0"
9
- gem "tarruby", ">= 0.1.5"
9
+ gem "archive-tar-minitar", ">= 0.5.2"
10
10
 
11
11
  # Gems required for testing only. To install run
12
12
  # gem bundle test
data/README.md CHANGED
@@ -34,6 +34,14 @@ There is also a fairly short (12 minute) [getting started video](http://vimeo.co
34
34
  explains how to build a fully functional LAMP development environment, which
35
35
  covers a few parts of Vagrant in more detail than the website guide.
36
36
 
37
+ ## Installing the Gem from Git
38
+
39
+ If you want the bleeding edge version of Vagrant, we try to keep master pretty stable
40
+ and you're welcome to give it a shot. The following is an example showing how to do this:
41
+
42
+ rake build
43
+ sudo rake install
44
+
37
45
  ## Contributing to Vagrant
38
46
 
39
47
  To hack on vagrant, you'll need [bundler](http://github.com/carlhuda/bundler) which can
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ begin
15
15
  gemspec.add_dependency('net-scp', '>= 1.0.2')
16
16
  gemspec.add_dependency('json', '>= 1.2.0')
17
17
  gemspec.add_dependency('git-style-binaries', '>= 0.1.10')
18
- gemspec.add_dependency('tarruby', '>= 0.1.5')
18
+ gemspec.add_dependency('archive-tar-minitar', '= 0.5.2')
19
19
  end
20
20
  Jeweler::GemcutterTasks.new
21
21
  rescue LoadError
@@ -38,4 +38,4 @@ begin
38
38
  rescue LoadError
39
39
  puts "Yard not available. Install it with: gem install yard"
40
40
  puts "if you wish to be able to generate developer documentation."
41
- end
41
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
data/bin/vagrant CHANGED
@@ -9,7 +9,7 @@ end
9
9
  require 'git-style-binary/command'
10
10
 
11
11
  GitStyleBinary.primary do
12
- version "0.1.3"
12
+ version "0.1.4"
13
13
 
14
14
  run { educate }
15
15
  end
@@ -4,7 +4,6 @@ module Vagrant
4
4
  # This action unpackages a downloaded box file into its final
5
5
  # box destination within the vagrant home folder.
6
6
  class Unpackage < Base
7
- TAR_OPTIONS = [File::RDONLY, 0644, Tar::GNU]
8
7
 
9
8
  def execute!
10
9
  @runner.invoke_around_callback(:unpackage) do
@@ -38,12 +37,10 @@ msg
38
37
  def decompress
39
38
  Dir.chdir(box_dir) do
40
39
  logger.info "Extracting box to #{box_dir}..."
41
- Tar.open(@runner.temp_path, *TAR_OPTIONS) do |tar|
42
- tar.extract_all
43
- end
40
+ Archive::Tar::Minitar.unpack(@runner.temp_path, box_dir)
44
41
  end
45
42
  end
46
43
  end
47
44
  end
48
45
  end
49
- end
46
+ end
@@ -69,11 +69,15 @@ module Vagrant
69
69
  # to execute a single action on an instance. The syntax for executing a
70
70
  # single method on an instance is the same as the {execute!} class method.
71
71
  def execute!(single_action=nil, *args)
72
+
72
73
  if single_action
73
74
  actions.clear
74
75
  add_action(single_action, *args)
75
76
  end
76
77
 
78
+ # Raising it here might be too late and hard debug where the actions are comming from (meta actions)
79
+ raise DuplicateActionException.new if action_klasses.uniq.size < action_klasses.size
80
+
77
81
  # Call the prepare method on each once its
78
82
  # initialized, then call the execute! method
79
83
  begin
@@ -123,6 +127,12 @@ module Vagrant
123
127
  end
124
128
  results
125
129
  end
130
+
131
+ def action_klasses
132
+ actions.map { |a| a.class }
133
+ end
126
134
  end
135
+
136
+ class DuplicateActionException < Exception; end
127
137
  end
128
- end
138
+ end
@@ -38,20 +38,24 @@ module Vagrant
38
38
 
39
39
  def compress
40
40
  logger.info "Packaging VM into #{tar_path} ..."
41
- Tar.open(tar_path, File::CREAT | File::WRONLY, 0644, Tar::GNU) do |tar|
42
- begin
43
- current_dir = FileUtils.pwd
44
- @include_files.each do |f|
45
- logger.info "Packaging additional file: #{f}"
46
- tar.append_file(f)
47
- end
41
+ File.open(tar_path, File::CREAT | File::WRONLY, 0644) do |tar|
42
+ Archive::Tar::Minitar::Output.open(tar) do |output|
43
+ begin
44
+ current_dir = FileUtils.pwd
45
+
46
+ include_files.each do |f|
47
+ logger.info "Packaging additional file: #{f}"
48
+ Archive::Tar::Minitar.pack_file(f, output)
49
+ end
48
50
 
49
- FileUtils.cd(temp_path)
51
+ FileUtils.cd(temp_path)
50
52
 
51
- # Append tree will append the entire directory tree unless a relative folder reference is used
52
- tar.append_tree(".")
53
- ensure
54
- FileUtils.cd(current_dir)
53
+ Dir.glob(File.join(".", "*")).each do |entry|
54
+ Archive::Tar::Minitar.pack_file(entry, output)
55
+ end
56
+ ensure
57
+ FileUtils.cd(current_dir)
58
+ end
55
59
  end
56
60
  end
57
61
  end
@@ -21,7 +21,7 @@ error
21
21
  end
22
22
 
23
23
  # Copy over the rootfile template into this directory
24
- File.copy(File.join(PROJECT_ROOT, "templates", Env::ROOTFILE_NAME), rootfile_path)
24
+ FileUtils.cp(File.join(PROJECT_ROOT, "templates", Env::ROOTFILE_NAME), rootfile_path)
25
25
  end
26
26
 
27
27
  # Bring up a vagrant instance. This handles everything from importing
data/lib/vagrant/env.rb CHANGED
@@ -89,7 +89,10 @@ module Vagrant
89
89
  def load_root_path!(path=nil)
90
90
  path ||= Pathname.new(Dir.pwd)
91
91
 
92
- return false if path.to_s == '/'
92
+ # Stop if we're at the root. 2nd regex matches windows drives
93
+ # such as C:. and Z:. Portability of this check will need to be
94
+ # researched.
95
+ return false if path.to_s == '/' || path.to_s =~ /^[A-Z]:\.$/
93
96
 
94
97
  file = "#{path}/#{ROOTFILE_NAME}"
95
98
  if File.exist?(file)
data/lib/vagrant.rb CHANGED
@@ -3,8 +3,8 @@ $:.unshift(libdir)
3
3
  PROJECT_ROOT = File.join(libdir, '..') unless defined?(PROJECT_ROOT)
4
4
 
5
5
  # The libs which must be loaded prior to the rest
6
- %w{tempfile open-uri ftools json pathname logger uri net/http virtualbox net/ssh tarruby
7
- net/scp fileutils vagrant/util vagrant/actions/base vagrant/downloaders/base}.each do |f|
6
+ %w{tempfile open-uri json pathname logger uri net/http virtualbox net/ssh archive/tar/minitar
7
+ net/scp fileutils vagrant/util vagrant/actions/base vagrant/downloaders/base vagrant/actions/runner}.each do |f|
8
8
  require f
9
9
  end
10
10
 
@@ -84,6 +84,7 @@ class UnpackageBoxActionTest < Test::Unit::TestCase
84
84
 
85
85
  @action.stubs(:box_dir).returns(@box_dir)
86
86
  Dir.stubs(:chdir).yields
87
+ Archive::Tar::Minitar.stubs(:unpack)
87
88
  end
88
89
 
89
90
  should "change to the box directory" do
@@ -92,9 +93,7 @@ class UnpackageBoxActionTest < Test::Unit::TestCase
92
93
  end
93
94
 
94
95
  should "open the tar file within the new directory, and extract it all" do
95
- @tar = mock("tar")
96
- @tar.expects(:extract_all).once
97
- Tar.expects(:open).with(@runner.temp_path, anything, anything, anything).yields(@tar)
96
+ Archive::Tar::Minitar.expects(:unpack).with(@runner.temp_path, @box_dir).once
98
97
  @action.decompress
99
98
  end
100
99
  end
@@ -1,8 +1,8 @@
1
1
  require File.join(File.dirname(__FILE__), '..', '..', 'test_helper')
2
2
 
3
3
  class ActionRunnerTest < Test::Unit::TestCase
4
- def mock_fake_action
5
- action = mock("action")
4
+ def mock_fake_action(action_klass = nil, runner = nil)
5
+ action = action_klass ? action_klass.new(runner) : mock("action")
6
6
  action.stubs(:prepare)
7
7
  action.stubs(:execute!)
8
8
  action.stubs(:cleanup)
@@ -129,6 +129,7 @@ class ActionRunnerTest < Test::Unit::TestCase
129
129
  context "instance method execute" do
130
130
  setup do
131
131
  @runner = Vagrant::Actions::Runner.new
132
+ @runner.stubs(:action_klasses).returns([Vagrant::Actions::Base])
132
133
  end
133
134
 
134
135
  should "clear the actions and run a single action if given to execute!" do
@@ -233,4 +234,29 @@ class ActionRunnerTest < Test::Unit::TestCase
233
234
  assert @runner.actions.empty?
234
235
  end
235
236
  end
237
+
238
+ context "duplicate action exceptions" do
239
+ setup do
240
+ @runner = Vagrant::Actions::Runner.new
241
+ end
242
+
243
+ should "should be raised when a duplicate is added" do
244
+ action = mock_fake_action
245
+ 2.times {@runner.actions << action }
246
+ assert_raise Vagrant::Actions::DuplicateActionException do
247
+ @runner.execute!
248
+ end
249
+ end
250
+
251
+ should "should not be raise when no duplicate actions are present" do
252
+ @runner.actions << mock_fake_action(Vagrant::Actions::Base, @runner)
253
+ @runner.actions << mock_fake_action(Vagrant::Actions::VM::Halt, @runner)
254
+
255
+ assert_nothing_raised { @runner.execute! }
256
+ end
257
+
258
+ should "should not raise when a single action is specified" do
259
+ assert_nothing_raised { @runner.execute!(Vagrant::Actions::Base) }
260
+ end
261
+ end
236
262
  end
@@ -66,27 +66,49 @@ class PackageActionTest < Test::Unit::TestCase
66
66
  @temp_path = "foo"
67
67
  @action.stubs(:temp_path).returns(@temp_path)
68
68
 
69
+ @include_files = []
70
+ @action.stubs(:include_files).returns(@include_files)
71
+
69
72
  @pwd = "bar"
70
73
  FileUtils.stubs(:pwd).returns(@pwd)
71
74
  FileUtils.stubs(:cd)
72
75
 
73
- @tar = mock("tar")
74
- Tar.stubs(:open).yields(@tar)
76
+ @file = mock("file")
77
+ File.stubs(:open).yields(@file)
78
+
79
+ @output = mock("output")
80
+ @tar = Archive::Tar::Minitar
81
+ Archive::Tar::Minitar::Output.stubs(:open).yields(@output)
82
+ @tar.stubs(:pack_file)
75
83
  end
76
84
 
77
85
  should "open the tar file with the tar path properly" do
78
- Tar.expects(:open).with(@tar_path, File::CREAT | File::WRONLY, 0644, Tar::GNU).once
86
+ File.expects(:open).with(@tar_path, File::CREAT | File::WRONLY, 0644).once
87
+ @action.compress
88
+ end
89
+
90
+ should "open tar file" do
91
+ Archive::Tar::Minitar::Output.expects(:open).with(@file).once
79
92
  @action.compress
80
93
  end
81
94
 
82
95
  #----------------------------------------------------------------
83
- # Methods below this comment test the block yielded by Tar.open
96
+ # Methods below this comment test the block yielded by Minitar open
84
97
  #----------------------------------------------------------------
85
98
  should "cd to the directory and append the directory" do
99
+ @files = []
86
100
  compress_seq = sequence("compress_seq")
101
+
87
102
  FileUtils.expects(:pwd).once.returns(@pwd).in_sequence(compress_seq)
88
103
  FileUtils.expects(:cd).with(@temp_path).in_sequence(compress_seq)
89
- @tar.expects(:append_tree).with(".").in_sequence(compress_seq)
104
+ Dir.expects(:glob).returns(@files).in_sequence(compress_seq)
105
+
106
+ 5.times do |i|
107
+ file = mock("file#{i}")
108
+ @tar.expects(:pack_file).with(file, @output).once.in_sequence(compress_seq)
109
+ @files << file
110
+ end
111
+
90
112
  FileUtils.expects(:cd).with(@pwd).in_sequence(compress_seq)
91
113
  @action.compress
92
114
  end
@@ -102,17 +124,21 @@ class PackageActionTest < Test::Unit::TestCase
102
124
  end
103
125
 
104
126
  should "add included files when passed" do
105
- include_files = ['foo', 'bar']
106
- action = mock_action(Vagrant::Actions::VM::Package, "bing", include_files).last
107
- action.stubs(:temp_path).returns("foo")
108
- @tar.expects(:append_tree).with(".")
109
- include_files.each { |f| @tar.expects(:append_file).with(f) }
110
- action.compress
127
+ compress_seq = sequence("compress")
128
+ @files = []
129
+ 5.times do |i|
130
+ file = mock("file#{i}")
131
+ @tar.expects(:pack_file).with(file, @output).once.in_sequence(compress_seq)
132
+ @files << file
133
+ end
134
+
135
+ @action.expects(:include_files).returns(@files)
136
+ @action.compress
111
137
  end
112
138
 
113
139
  should "not add files when none are specified" do
114
- @tar.expects(:append_tree).with(".")
115
- @tar.expects(:append_file).never
140
+ @tar.expects(:pack_file).never
141
+ Dir.expects(:glob).once.returns([])
116
142
  @action.compress
117
143
  end
118
144
  end
@@ -54,9 +54,11 @@ class BusyTest < Test::Unit::TestCase
54
54
  should "report busy to the outside world regardless of thread" do
55
55
  Thread.new do
56
56
  Vagrant.busy do
57
- sleep(1)
57
+ sleep(2)
58
58
  end
59
59
  end
60
+ # Give the thread time to start
61
+ sleep(1)
60
62
 
61
63
  # While the above thread is executing vagrant should be busy
62
64
  assert Vagrant.busy?
@@ -12,7 +12,7 @@ class CommandsTest < Test::Unit::TestCase
12
12
 
13
13
  context "init" do
14
14
  setup do
15
- File.stubs(:copy)
15
+ FileUtils.stubs(:cp)
16
16
  @rootfile_path = File.join(Dir.pwd, Vagrant::Env::ROOTFILE_NAME)
17
17
  @template_path = File.join(PROJECT_ROOT, "templates", Vagrant::Env::ROOTFILE_NAME)
18
18
  end
@@ -25,7 +25,7 @@ class CommandsTest < Test::Unit::TestCase
25
25
 
26
26
  should "copy the templated rootfile to the current path" do
27
27
  File.expects(:exist?).with(@rootfile_path).returns(false)
28
- File.expects(:copy).with(@template_path, @rootfile_path).once
28
+ FileUtils.expects(:cp).with(@template_path, @rootfile_path).once
29
29
  Vagrant::Commands.init
30
30
  end
31
31
  end
@@ -218,11 +218,16 @@ class EnvTest < Test::Unit::TestCase
218
218
  assert !Vagrant::Env.load_root_path!(paths.first)
219
219
  end
220
220
 
221
- should "should return false if not found" do
221
+ should "return false if not found" do
222
222
  path = Pathname.new("/")
223
223
  assert !Vagrant::Env.load_root_path!(path)
224
224
  end
225
225
 
226
+ should "return false if not found on windows-style root" do
227
+ path = Pathname.new("C:.")
228
+ assert !Vagrant::Env.load_root_path!(path)
229
+ end
230
+
226
231
  should "should set the path for the rootfile" do
227
232
  path = "/foo"
228
233
  File.expects(:exist?).with("#{path}/#{Vagrant::Env::ROOTFILE_NAME}").returns(true)
data/vagrant.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{vagrantup}
8
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mitchell Hashimoto", "John Bender"]
12
- s.date = %q{2010-03-08}
12
+ s.date = %q{2010-03-09}
13
13
  s.description = %q{Vagrant is a tool for building and distributing virtualized development environments.}
14
14
  s.email = ["mitchell.hashimoto@gmail.com", "john.m.bender@gmail.com"]
15
15
  s.executables = ["vagrant", "vagrant-box", "vagrant-down", "vagrant-halt", "vagrant-init", "vagrant-package", "vagrant-reload", "vagrant-resume", "vagrant-ssh", "vagrant-suspend", "vagrant-up"]
@@ -161,14 +161,14 @@ Gem::Specification.new do |s|
161
161
  s.add_runtime_dependency(%q<net-scp>, [">= 1.0.2"])
162
162
  s.add_runtime_dependency(%q<json>, [">= 1.2.0"])
163
163
  s.add_runtime_dependency(%q<git-style-binaries>, [">= 0.1.10"])
164
- s.add_runtime_dependency(%q<tarruby>, [">= 0.1.5"])
164
+ s.add_runtime_dependency(%q<archive-tar-minitar>, ["= 0.5.2"])
165
165
  else
166
166
  s.add_dependency(%q<virtualbox>, [">= 0.5.0"])
167
167
  s.add_dependency(%q<net-ssh>, [">= 2.0.19"])
168
168
  s.add_dependency(%q<net-scp>, [">= 1.0.2"])
169
169
  s.add_dependency(%q<json>, [">= 1.2.0"])
170
170
  s.add_dependency(%q<git-style-binaries>, [">= 0.1.10"])
171
- s.add_dependency(%q<tarruby>, [">= 0.1.5"])
171
+ s.add_dependency(%q<archive-tar-minitar>, ["= 0.5.2"])
172
172
  end
173
173
  else
174
174
  s.add_dependency(%q<virtualbox>, [">= 0.5.0"])
@@ -176,7 +176,7 @@ Gem::Specification.new do |s|
176
176
  s.add_dependency(%q<net-scp>, [">= 1.0.2"])
177
177
  s.add_dependency(%q<json>, [">= 1.2.0"])
178
178
  s.add_dependency(%q<git-style-binaries>, [">= 0.1.10"])
179
- s.add_dependency(%q<tarruby>, [">= 0.1.5"])
179
+ s.add_dependency(%q<archive-tar-minitar>, ["= 0.5.2"])
180
180
  end
181
181
  end
182
182
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrantup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mitchell Hashimoto
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2010-03-08 00:00:00.000000000 Z
12
+ date: 2010-03-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: virtualbox
@@ -82,19 +82,19 @@ dependencies:
82
82
  - !ruby/object:Gem::Version
83
83
  version: 0.1.10
84
84
  - !ruby/object:Gem::Dependency
85
- name: tarruby
85
+ name: archive-tar-minitar
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - '>='
88
+ - - '='
89
89
  - !ruby/object:Gem::Version
90
- version: 0.1.5
90
+ version: 0.5.2
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - '='
96
96
  - !ruby/object:Gem::Version
97
- version: 0.1.5
97
+ version: 0.5.2
98
98
  description: Vagrant is a tool for building and distributing virtualized development
99
99
  environments.
100
100
  email: