vagrant-vbguest 0.7.0.pre1 → 0.7.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -2
- data/lib/vagrant-vbguest.rb +3 -0
- data/lib/vagrant-vbguest/download.rb +5 -5
- data/lib/vagrant-vbguest/hosts/base.rb +112 -0
- data/lib/vagrant-vbguest/hosts/virtualbox.rb +86 -0
- data/lib/vagrant-vbguest/installer.rb +1 -1
- data/lib/vagrant-vbguest/installers/base.rb +8 -97
- data/lib/vagrant-vbguest/machine.rb +28 -22
- data/lib/vagrant-vbguest/version.rb +1 -1
- data/lib/vagrant_init.rb +3 -0
- metadata +5 -3
data/Gemfile
CHANGED
@@ -7,5 +7,5 @@ group :development do
|
|
7
7
|
# We depend on Vagrant for development, but we don't add it as a
|
8
8
|
# gem dependency because we expect to be installed within the
|
9
9
|
# Vagrant environment itself using `vagrant plugin`.
|
10
|
-
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git"
|
11
|
-
end
|
10
|
+
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git"
|
11
|
+
end
|
data/lib/vagrant-vbguest.rb
CHANGED
@@ -12,6 +12,9 @@ require 'vagrant-vbguest/helpers'
|
|
12
12
|
|
13
13
|
require 'vagrant-vbguest/machine'
|
14
14
|
|
15
|
+
require 'vagrant-vbguest/hosts/base'
|
16
|
+
require 'vagrant-vbguest/hosts/virtualbox'
|
17
|
+
|
15
18
|
require 'vagrant-vbguest/installer'
|
16
19
|
require 'vagrant-vbguest/installers/base'
|
17
20
|
require 'vagrant-vbguest/installers/linux'
|
@@ -34,7 +34,7 @@ module VagrantVbguest
|
|
34
34
|
|
35
35
|
# Use the class if it matches the given URI or if this
|
36
36
|
# is the last class...
|
37
|
-
if classes.length == (i + 1) || klass.match?(@env[:
|
37
|
+
if classes.length == (i + 1) || klass.match?(@env[:url])
|
38
38
|
@env[:ui].info I18n.t("vagrant.plugins.vbguest.download.with", :class => klass.to_s)
|
39
39
|
@downloader = klass.new(@env[:ui])
|
40
40
|
break
|
@@ -45,7 +45,7 @@ module VagrantVbguest
|
|
45
45
|
# just in case for now.
|
46
46
|
raise Errors::BoxDownloadUnknownType if !@downloader
|
47
47
|
|
48
|
-
@downloader.prepare(@env[:
|
48
|
+
@downloader.prepare(@env[:url]) if @downloader.respond_to?(:prepare)
|
49
49
|
true
|
50
50
|
end
|
51
51
|
|
@@ -66,17 +66,17 @@ module VagrantVbguest
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def with_tempfile
|
69
|
-
File.open(
|
69
|
+
File.open(temp_filename, Platform.tar_file_options) do |tempfile|
|
70
70
|
yield tempfile
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
def
|
74
|
+
def temp_filename
|
75
75
|
@env[:tmp_path].join(BASENAME + Time.now.to_i.to_s)
|
76
76
|
end
|
77
77
|
|
78
78
|
def download_to(f)
|
79
|
-
@downloader.download!(@env[:
|
79
|
+
@downloader.download!(@env[:url], f)
|
80
80
|
end
|
81
81
|
|
82
82
|
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
module VagrantVbguest
|
2
|
+
module Hosts
|
3
|
+
class Base
|
4
|
+
include VagrantVbguest::Helpers::VmCompatible
|
5
|
+
|
6
|
+
attr_reader :env, :vm, :options
|
7
|
+
|
8
|
+
def initialize(vm, options=nil)
|
9
|
+
@vm = vm
|
10
|
+
@env = vm.env
|
11
|
+
@options = options
|
12
|
+
end
|
13
|
+
|
14
|
+
# Determinates the host's version
|
15
|
+
#
|
16
|
+
# @return [String] The version code of the *host*'s virtualisation
|
17
|
+
def version
|
18
|
+
@version ||= driver.version
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
# Additions-file-detection-magig.
|
23
|
+
#
|
24
|
+
# Detection runs in those stages:
|
25
|
+
# 1. Uses the +iso_path+ config option, if present and not set to +:auto+
|
26
|
+
# 2. Look out for a local additions file
|
27
|
+
# 3. Use the default web URI
|
28
|
+
#
|
29
|
+
# If the detected or configured path is not a local file and remote downloads
|
30
|
+
# are allowed (the config option +:no_remote+ is NOT set) it will try to
|
31
|
+
# download that file into a temp file using Vagrants Downloaders.
|
32
|
+
# If remote downloads are prohibited (the config option +:no_remote+ IS set)
|
33
|
+
# a +VagrantVbguest::IsoPathAutodetectionError+ will be thrown
|
34
|
+
#
|
35
|
+
# @return [String] A absolute path to the GuestAdditions iso file.
|
36
|
+
# This might be a temp-file, e.g. when downloaded from web.
|
37
|
+
def additions_file
|
38
|
+
return @additions_file if @additions_file
|
39
|
+
|
40
|
+
path = options[:iso_path]
|
41
|
+
if !path || path.empty? || path == :auto
|
42
|
+
path = local_path
|
43
|
+
path = web_path if !options[:no_remote] && !path
|
44
|
+
end
|
45
|
+
raise VagrantVbguest::IsoPathAutodetectionError if !path || path.empty?
|
46
|
+
|
47
|
+
path = versionize(path)
|
48
|
+
|
49
|
+
if Vagrant::Downloaders::File.match? path
|
50
|
+
@additions_file = path
|
51
|
+
else
|
52
|
+
# :TODO: This will also raise, if the iso_url points to an invalid local path
|
53
|
+
raise VagrantVbguest::DownloadingDisabledError.new(:from => path) if options[:no_remote]
|
54
|
+
@additions_file = download path
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# If needed, remove downloaded temp file
|
59
|
+
def cleanup
|
60
|
+
@download.cleanup if @download
|
61
|
+
end
|
62
|
+
|
63
|
+
protected
|
64
|
+
|
65
|
+
# Default web URI, where "additions file" can be downloaded.
|
66
|
+
#
|
67
|
+
# @return [String] A URI template containing the versions placeholder.
|
68
|
+
def web_path
|
69
|
+
raise NotImplementedError
|
70
|
+
end
|
71
|
+
|
72
|
+
# Finds the "additions file" on the host system.
|
73
|
+
# Returns +nil+ if none found.
|
74
|
+
#
|
75
|
+
# @return [String] Absolute path to the local "additions file", or +nil+ if not found.
|
76
|
+
def local_path
|
77
|
+
raise NotImplementedError
|
78
|
+
end
|
79
|
+
|
80
|
+
# replaces the veriosn placeholder with the additions
|
81
|
+
# version string
|
82
|
+
#
|
83
|
+
# @param [String] A path or URL (or any other String)
|
84
|
+
#
|
85
|
+
# @retrun [String] A copy of the passed string, with verision
|
86
|
+
# placeholder replaced
|
87
|
+
def versionize(path)
|
88
|
+
path % {:version => version}
|
89
|
+
end
|
90
|
+
|
91
|
+
# Kicks off +VagrantVbguest::Download+ to download the additions file
|
92
|
+
# into a temp file.
|
93
|
+
#
|
94
|
+
# To remove the created tempfile call +cleanup+
|
95
|
+
#
|
96
|
+
# @param [String] The path or URI to download
|
97
|
+
#
|
98
|
+
# @return [String] The path to the downloaded file
|
99
|
+
def download(path)
|
100
|
+
downloader_env = {
|
101
|
+
:ui => @env.ui,
|
102
|
+
:tmp_path => @env.tmp_path,
|
103
|
+
:url => path
|
104
|
+
}
|
105
|
+
@download = VagrantVbguest::Download.new(downloader_env)
|
106
|
+
@download.download
|
107
|
+
@download.temp_path
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module VagrantVbguest
|
2
|
+
module Hosts
|
3
|
+
class VirtualBox < Base
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
# Default web URI, where GuestAdditions iso file can be downloaded.
|
8
|
+
#
|
9
|
+
# @return [String] A URI template containing the versions placeholder.
|
10
|
+
def web_path
|
11
|
+
"http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso"
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
# Finds GuestAdditions iso file on the host system.
|
16
|
+
# Returns +nil+ if none found.
|
17
|
+
#
|
18
|
+
# @return [String] Absolute path to the local GuestAdditions iso file, or +nil+ if not found.
|
19
|
+
def local_path
|
20
|
+
media_manager_iso || guess_local_iso
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
# Helper method which queries the VirtualBox media manager
|
26
|
+
# for a +VBoxGuestAdditions.iso+ file.
|
27
|
+
# Returns +nil+ if none found.
|
28
|
+
#
|
29
|
+
# @return [String] Absolute path to the local GuestAdditions iso file, or +nil+ if not found.
|
30
|
+
def media_manager_iso
|
31
|
+
(m = driver.execute('list', 'dvds').match(/^.+:\s+(.*VBoxGuestAdditions(?:_#{version})?\.iso)$/i)) && m[1]
|
32
|
+
end
|
33
|
+
|
34
|
+
# Find the first GuestAdditions iso file which exists on the host system
|
35
|
+
#
|
36
|
+
# @return [String] Absolute path to the local GuestAdditions iso file, or +nil+ if not found.
|
37
|
+
def guess_local_iso
|
38
|
+
Array(platform_path).find do |path|
|
39
|
+
path && File.exists?(path)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# Makes an educated guess where the GuestAdditions iso file
|
44
|
+
# could be found on the host system depending on the OS.
|
45
|
+
# Returns +nil+ if no the file is not in it's place.
|
46
|
+
def platform_path
|
47
|
+
[:linux, :darwin, :cygwin, :windows].each do |sys|
|
48
|
+
return self.send("#{sys}_path") if Vagrant::Util::Platform.respond_to?("#{sys}?") && Vagrant::Util::Platform.send("#{sys}?")
|
49
|
+
end
|
50
|
+
nil
|
51
|
+
end
|
52
|
+
|
53
|
+
# Makes an educated guess where the GuestAdditions iso file
|
54
|
+
# on linux based systems
|
55
|
+
def linux_path
|
56
|
+
paths = ["/usr/share/virtualbox/VBoxGuestAdditions.iso"]
|
57
|
+
paths.unshift(File.join(ENV['HOME'], '.VirtualBox', "VBoxGuestAdditions_#{version}.iso")) if ENV['HOME']
|
58
|
+
paths
|
59
|
+
end
|
60
|
+
|
61
|
+
# Makes an educated guess where the GuestAdditions iso file
|
62
|
+
# on Macs
|
63
|
+
def darwin_path
|
64
|
+
"/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso"
|
65
|
+
end
|
66
|
+
|
67
|
+
# Makes an educated guess where the GuestAdditions iso file
|
68
|
+
# on windows systems
|
69
|
+
def windows_path
|
70
|
+
if (p = ENV["VBOX_INSTALL_PATH"]) && !p.empty?
|
71
|
+
File.join(p, "VBoxGuestAdditions.iso")
|
72
|
+
elsif (p = ENV["PROGRAM_FILES"] || ENV["ProgramW6432"] || ENV["PROGRAMFILES"]) && !p.empty?
|
73
|
+
File.join(p, "/Oracle/VirtualBox/VBoxGuestAdditions.iso")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
alias_method :cygwin_path, :windows_path
|
77
|
+
|
78
|
+
# overwrite the default version string to allow lagacy
|
79
|
+
# '$VBOX_VERSION' as a placerholder
|
80
|
+
def versionize(path)
|
81
|
+
super(path.gsub('$VBOX_VERSION', version))
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -25,12 +25,14 @@ module VagrantVbguest
|
|
25
25
|
false
|
26
26
|
end
|
27
27
|
|
28
|
-
attr_reader :env, :vm, :options
|
28
|
+
attr_reader :env, :vm, :options, :host
|
29
29
|
|
30
30
|
def initialize(vm, options=nil)
|
31
31
|
@vm = vm
|
32
32
|
@env = vm.env
|
33
33
|
@options = options
|
34
|
+
|
35
|
+
@host = VagrantVbguest::Hosts::VirtualBox.new(vm, options)
|
34
36
|
end
|
35
37
|
|
36
38
|
# The absolute file path of the GuestAdditions iso file should
|
@@ -124,12 +126,6 @@ module VagrantVbguest
|
|
124
126
|
@guest_version = guest_version
|
125
127
|
end
|
126
128
|
|
127
|
-
# Determinates the host's version
|
128
|
-
#
|
129
|
-
# @return [String] The version code of the Virtual Box *host*
|
130
|
-
def host_version
|
131
|
-
driver.version
|
132
|
-
end
|
133
129
|
|
134
130
|
# Determinates the version of the GuestAdditions installer in use
|
135
131
|
#
|
@@ -159,7 +155,7 @@ module VagrantVbguest
|
|
159
155
|
def yield_rebuild_warning
|
160
156
|
@env.ui.warn I18n.t("vagrant.plugins.vbguest.rebuild#{@options[:force] ? '_forced' : ''}",
|
161
157
|
:guest_version => guest_version(true),
|
162
|
-
:host_version =>
|
158
|
+
:host_version => @host.version)
|
163
159
|
end
|
164
160
|
|
165
161
|
# Helper to yield a warning message to the user in the event that the
|
@@ -173,102 +169,17 @@ module VagrantVbguest
|
|
173
169
|
:installer_version => installer_version(path_to_installer) || I18n.t("vagrant.plugins.vbguest.unknown"))
|
174
170
|
end
|
175
171
|
|
176
|
-
# GuestAdditions-iso-file-detection-magig.
|
177
|
-
#
|
178
|
-
# Detectio runs in those stages:
|
179
|
-
# 1. Uses the +iso_path+ config option, if present and not set to +:auto+
|
180
|
-
# 2. Look out for a local iso file
|
181
|
-
# 3. Use the default web URI
|
182
|
-
#
|
183
|
-
# If the detected or configured path is not a local file and remote downloads
|
184
|
-
# are allowed (the config option +:no_remote+ is NOT set) it will try to
|
185
|
-
# download that file into a temp file using Vagrants Downloaders.
|
186
|
-
# If remote downloads are prohibited (the config option +:no_remote+ IS set)
|
187
|
-
# a +VagrantVbguest::IsoPathAutodetectionError+ will be thrown
|
188
|
-
#
|
189
|
-
# @return [String] A absolute path to the GuestAdditions iso file.
|
190
|
-
# This might be a temp-file, e.g. when downloaded from web.
|
191
172
|
def iso_file
|
192
|
-
@
|
193
|
-
iso_path = options[:iso_path]
|
194
|
-
if !iso_path || iso_path.empty? || iso_path == :auto
|
195
|
-
iso_path = local_iso_path
|
196
|
-
iso_path = web_iso_path if !iso_path || iso_path.empty? && !options[:no_remote]
|
197
|
-
end
|
198
|
-
raise VagrantVbguest::IsoPathAutodetectionError if !iso_path || iso_path.empty?
|
199
|
-
|
200
|
-
version = host_version
|
201
|
-
iso_path = iso_path.gsub('$VBOX_VERSION', version) % {:version => version}
|
202
|
-
if Vagrant::Downloaders::File.match? iso_path
|
203
|
-
iso_path
|
204
|
-
else
|
205
|
-
# :TODO: This will also raise, if the iso_url points to an invalid local path
|
206
|
-
raise VagrantVbguest::DownloadingDisabledError.new(:from => iso_path) if options[:no_remote]
|
207
|
-
downloader_env = {
|
208
|
-
:ui => @env.ui,
|
209
|
-
:tmp_path => @env.tmp_path,
|
210
|
-
:iso_url => iso_path
|
211
|
-
}
|
212
|
-
@download = VagrantVbguest::Download.new(downloader_env)
|
213
|
-
@download.download
|
214
|
-
@download.temp_path
|
215
|
-
end
|
216
|
-
end
|
217
|
-
end
|
218
|
-
|
219
|
-
# Default web URI, where GuestAdditions iso file can be downloaded.
|
220
|
-
#
|
221
|
-
# @return [String] A URI template containing the versions placeholder.
|
222
|
-
def web_iso_path
|
223
|
-
"http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso"
|
224
|
-
end
|
225
|
-
|
226
|
-
# Finds GuestAdditions iso file on the host system.
|
227
|
-
# Returns +nil+ if none found.
|
228
|
-
#
|
229
|
-
# @return [String] Absolute path to the local GuestAdditions iso file, or +nil+ if not found.
|
230
|
-
def local_iso_path
|
231
|
-
media_manager_iso || guess_iso
|
232
|
-
end
|
233
|
-
|
234
|
-
# Helper method which queries the VirtualBox media manager
|
235
|
-
# for a +VBoxGuestAdditions.iso+ file.
|
236
|
-
# Returns +nil+ if none found.
|
237
|
-
#
|
238
|
-
# @return [String] Absolute path to the local GuestAdditions iso file, or +nil+ if not found.
|
239
|
-
def media_manager_iso
|
240
|
-
(m = driver.execute('list', 'dvds').match(/^.+:\s+(.*VBoxGuestAdditions(?:_#{guest_version})?\.iso)$/i)) && m[1]
|
241
|
-
end
|
242
|
-
|
243
|
-
# Makes an educated guess where the GuestAdditions iso file
|
244
|
-
# could be found on the host system depending on the OS.
|
245
|
-
# Returns +nil+ if no the file is not in it's place.
|
246
|
-
#
|
247
|
-
# @return [String] Absolute path to the local GuestAdditions iso file, or +nil+ if not found.
|
248
|
-
def guess_iso
|
249
|
-
paths = if Vagrant::Util::Platform.linux?
|
250
|
-
[
|
251
|
-
(File.join(ENV['HOME'], '.VirtualBox', "VBoxGuestAdditions_#{guest_version}.iso") if ENV['HOME']),
|
252
|
-
"/usr/share/virtualbox/VBoxGuestAdditions.iso"
|
253
|
-
]
|
254
|
-
elsif Vagrant::Util::Platform.darwin?
|
255
|
-
"/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso"
|
256
|
-
elsif Vagrant::Util::Platform.windows?
|
257
|
-
if (p = ENV["VBOX_INSTALL_PATH"]) && !p.empty?
|
258
|
-
File.join(p, "VBoxGuestAdditions.iso")
|
259
|
-
elsif ENV["PROGRAM_FILES"] || ENV["ProgramW6432"] || ENV["PROGRAMFILES"]
|
260
|
-
File.join((ENV["PROGRAM_FILES"] || ENV["ProgramW6432"] || ENV["PROGRAMFILES"]), "/Oracle/VirtualBox/VBoxGuestAdditions.iso")
|
261
|
-
end
|
262
|
-
end
|
263
|
-
Array(paths).find { |path| path && File.exists?(path) }
|
173
|
+
@host.additions_file
|
264
174
|
end
|
175
|
+
alias_method :additions_file, :iso_file
|
265
176
|
|
266
177
|
# A helper method to handle the GuestAdditions iso file upload
|
267
178
|
# into the guest box.
|
268
179
|
# The file will uploaded to the location given by the +temp_path+ method.
|
269
180
|
#
|
270
181
|
# @example Default upload
|
271
|
-
# upload(
|
182
|
+
# upload(file)
|
272
183
|
#
|
273
184
|
# @param [String] Path of the file to upload to the +tmp_path*
|
274
185
|
def upload(file)
|
@@ -279,7 +190,7 @@ module VagrantVbguest
|
|
279
190
|
# A helper method to delete the uploaded GuestAdditions iso file
|
280
191
|
# from the guest box
|
281
192
|
def cleanup
|
282
|
-
@
|
193
|
+
@host.cleanup
|
283
194
|
communicate.execute("test -f #{tmp_path} && rm #{tmp_path}", :error_check => false) do |type, data|
|
284
195
|
env.ui.error(data.chomp, :prefix => false)
|
285
196
|
end
|
@@ -14,20 +14,6 @@ module VagrantVbguest
|
|
14
14
|
@logger.debug("initialize vbguest machine for VM '#{vm.name}' (#{vm.to_s})")
|
15
15
|
|
16
16
|
@installer = Installer.new vm, options
|
17
|
-
|
18
|
-
@ga_machine = MicroMachine.new(:pending).tap { |m|
|
19
|
-
m.when :install, :pending => :installed
|
20
|
-
m.when :start, :pending => :started
|
21
|
-
m.when :rebuild, :pending => :rebuilt, :started => :rebuilt
|
22
|
-
|
23
|
-
m.on(:installed) { installer.install }
|
24
|
-
m.on(:started) { installer.start }
|
25
|
-
m.on(:rebuilt) { installer.rebuild }
|
26
|
-
}
|
27
|
-
|
28
|
-
@box_machine = MicroMachine.new(:first_boot).tap { |m|
|
29
|
-
m.when :reboot, :first_boot => :rebooted
|
30
|
-
}
|
31
17
|
end
|
32
18
|
|
33
19
|
def run
|
@@ -47,24 +33,24 @@ module VagrantVbguest
|
|
47
33
|
|
48
34
|
def install
|
49
35
|
return env.ui.warn(I18n.t("vagrant.plugins.vbguest.skipped_installation")) if options[:no_install] && !options[:force]
|
50
|
-
|
36
|
+
guest_additions_state.trigger :install
|
51
37
|
end
|
52
38
|
|
53
39
|
def rebuild
|
54
40
|
return env.ui.warn(I18n.t("vagrant.plugins.vbguest.skipped_rebuild")) if options[:no_install] && !options[:force]
|
55
|
-
|
41
|
+
guest_additions_state.trigger :rebuild
|
56
42
|
end
|
57
43
|
|
58
44
|
def start
|
59
|
-
|
45
|
+
guest_additions_state.trigger :start
|
60
46
|
end
|
61
47
|
|
62
|
-
def installation_ran?;
|
63
|
-
def started?;
|
64
|
-
def rebuilt?;
|
48
|
+
def installation_ran?; guest_additions_state == :installed end
|
49
|
+
def started?; guest_additions_state == :started end
|
50
|
+
def rebuilt?; guest_additions_state == :rebuilt end
|
65
51
|
|
66
|
-
def reboot;
|
67
|
-
def reboot?;
|
52
|
+
def reboot; box_state.trigger :reboot end
|
53
|
+
def reboot?; box_state.state == :rebooted end
|
68
54
|
|
69
55
|
def steps(state)
|
70
56
|
case state
|
@@ -95,5 +81,25 @@ module VagrantVbguest
|
|
95
81
|
:guest_version => installer.guest_version
|
96
82
|
}
|
97
83
|
end
|
84
|
+
|
85
|
+
protected
|
86
|
+
|
87
|
+
def guest_additions_state
|
88
|
+
@guest_additions_state ||= MicroMachine.new(:pending).tap { |m|
|
89
|
+
m.when :install, :pending => :installed
|
90
|
+
m.when :start, :pending => :started
|
91
|
+
m.when :rebuild, :pending => :rebuilt, :started => :rebuilt
|
92
|
+
|
93
|
+
m.on(:installed) { installer.install }
|
94
|
+
m.on(:started) { installer.start }
|
95
|
+
m.on(:rebuilt) { installer.rebuild }
|
96
|
+
}
|
97
|
+
end
|
98
|
+
|
99
|
+
def box_state
|
100
|
+
@box_state ||= MicroMachine.new(:first_boot).tap { |m|
|
101
|
+
m.when :reboot, :first_boot => :rebooted
|
102
|
+
}
|
103
|
+
end
|
98
104
|
end
|
99
105
|
end
|
data/lib/vagrant_init.rb
CHANGED
@@ -13,6 +13,9 @@ require 'vagrant-vbguest/helpers'
|
|
13
13
|
|
14
14
|
require 'vagrant-vbguest/machine'
|
15
15
|
|
16
|
+
require 'vagrant-vbguest/hosts/base'
|
17
|
+
require 'vagrant-vbguest/hosts/virtualbox'
|
18
|
+
|
16
19
|
require 'vagrant-vbguest/installer'
|
17
20
|
require 'vagrant-vbguest/installers/base'
|
18
21
|
require 'vagrant-vbguest/installers/linux'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-vbguest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.0.
|
4
|
+
version: 0.7.0.pre2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: micromachine
|
@@ -96,6 +96,8 @@ files:
|
|
96
96
|
- lib/vagrant-vbguest/download.rb
|
97
97
|
- lib/vagrant-vbguest/errors.rb
|
98
98
|
- lib/vagrant-vbguest/helpers.rb
|
99
|
+
- lib/vagrant-vbguest/hosts/base.rb
|
100
|
+
- lib/vagrant-vbguest/hosts/virtualbox.rb
|
99
101
|
- lib/vagrant-vbguest/installer.rb
|
100
102
|
- lib/vagrant-vbguest/installers/base.rb
|
101
103
|
- lib/vagrant-vbguest/installers/debian.rb
|
@@ -123,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
125
|
version: '0'
|
124
126
|
segments:
|
125
127
|
- 0
|
126
|
-
hash:
|
128
|
+
hash: 3162000350700078297
|
127
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
130
|
none: false
|
129
131
|
requirements:
|