vagrant-hypconfigmgmt 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/.rspec +1 -0
- data/Makefile +3 -1
- data/README.md +2 -3
- data/lib/vagrant-hypconfigmgmt/.command.rb.swo +0 -0
- data/lib/vagrant-hypconfigmgmt/command.rb +224 -183
- data/lib/vagrant-hypconfigmgmt/version.rb +1 -1
- data/pkg/vagrant-hypconfigmgmt-0.0.2.gem +0 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/unit/command/call_spec.rb +93 -0
- data/spec/unit/command/configure_magento_spec.rb +35 -0
- data/spec/unit/command/configure_php_spec.rb +35 -0
- data/spec/unit/command/configure_synced_folders_spec.rb +35 -0
- data/spec/unit/command/configure_vagrant_spec.rb +33 -0
- data/spec/unit/command/configure_varnish_spec.rb +35 -0
- data/spec/unit/command/ensure_attribute_configured_spec.rb +100 -0
- data/spec/unit/command/ensure_magento_mounts_configured_spec.rb +268 -0
- data/spec/unit/command/ensure_required_plugins_are_installed_spec.rb +78 -0
- data/spec/unit/command/ensure_setting_exists_spec.rb +50 -0
- data/spec/unit/command/ensure_settings_are_configured_spec.rb +71 -0
- data/spec/unit/command/ensure_vagrant_box_type_configured_spec.rb +78 -0
- data/spec/unit/command/get_magento_version_spec.rb +57 -0
- data/spec/unit/command/get_options_string_spec.rb +48 -0
- data/spec/unit/command/get_php_version_spec.rb +56 -0
- data/spec/unit/command/get_setting_spec.rb +55 -0
- data/spec/unit/command/get_varnish_state_spec.rb +56 -0
- data/spec/unit/command/inform_if_gatling_not_installed_spec.rb +67 -0
- data/spec/unit/command/retrieve_settings_spec.rb +39 -0
- data/spec/unit/command/update_settings_spec.rb +30 -0
- data/spec/unit/command/use_default_input_if_input_empty_spec.rb +30 -0
- data/spec/unit/command/validate_magento2_root_spec.rb +101 -0
- data/vagrant-hypconfigmgmt.gemspec +3 -0
- metadata +70 -3
- data/pkg/vagrant-hypconfigmgmt-0.0.1.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9cee22257d778227a2d1b2b2286e7ee518ee55c
|
4
|
+
data.tar.gz: 96bef3d160c2e5a77b5fa7e884c916906bd62abd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f51b5e656562c661f5d1b8bc35e2a947f04675810f165bf1506e5675ef7cae288619825791179ea89b4d4e1cfe97fa2859f2298ced0e77f2d1e1575e2dd3d60a
|
7
|
+
data.tar.gz: 2d9b031d84ea2c15e4d4c372517aa59f6c578c35717d82b7075ad1d108bdbfdcb975333ef546f7be06a0f4ca9e3626131386cba4dd773ec58f712159659cdad0
|
data/.gitignore
CHANGED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Makefile
CHANGED
@@ -7,8 +7,10 @@ DESCRIPTION := Prompt to configure a hypernode-vagrant
|
|
7
7
|
|
8
8
|
all:
|
9
9
|
rake build
|
10
|
+
test:
|
11
|
+
bundle exec rspec spec/
|
10
12
|
install:
|
11
|
-
find pkg/ |
|
13
|
+
find pkg/ -name '*.gem' | head -n 1 | xargs vagrant plugin install
|
12
14
|
clean:
|
13
15
|
git clean -xfd
|
14
16
|
|
data/README.md
CHANGED
@@ -2,8 +2,7 @@ Install the build deps
|
|
2
2
|
======================
|
3
3
|
|
4
4
|
```
|
5
|
-
sudo
|
6
|
-
sudo apt-get install rake
|
5
|
+
sudo gem install bundler rake rspec simplecov coveralls
|
7
6
|
```
|
8
7
|
|
9
8
|
Create the gemfile (package)
|
@@ -12,5 +11,5 @@ Create the gemfile (package)
|
|
12
11
|
```
|
13
12
|
$ make
|
14
13
|
rake build
|
15
|
-
vagrant-hypconfigmgmt 0.0.
|
14
|
+
vagrant-hypconfigmgmt 0.0.2 built to pkg/vagrant-hypconfigmgmt-0.0.2.gem.
|
16
15
|
```
|
Binary file
|
@@ -12,224 +12,265 @@ AVAILABLE_VARNISH_STATES = [true, false]
|
|
12
12
|
|
13
13
|
# paths to local settings file
|
14
14
|
H_V_SETTINGS_FILE = "local.yml"
|
15
|
+
H_V_BASE_SETTINGS_FILE = ".local.base.yml"
|
15
16
|
|
16
17
|
RECOMMENDED_PLUGINS = ["vagrant-hostmanager", "vagrant-vbguest"]
|
17
18
|
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
def update_settings(settings)
|
25
|
-
File.open(H_V_SETTINGS_FILE, 'w') {|f| f.write settings.to_yaml }
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
def use_default_if_input_empty(input, default)
|
30
|
-
if input == ''
|
31
|
-
return default.to_s
|
32
|
-
else
|
33
|
-
return input
|
34
|
-
end
|
35
|
-
end
|
20
|
+
module VagrantHypconfigmgmt
|
21
|
+
class Command
|
36
22
|
|
23
|
+
def initialize(app, env)
|
24
|
+
@app = app
|
25
|
+
@env = env
|
26
|
+
end
|
37
27
|
|
38
|
-
def get_varnish_state(env)
|
39
|
-
input = env[:ui].ask("Do you want to enable Varnish? Enter true or false [default false]: ")
|
40
|
-
varnish_state = use_default_if_input_empty(input, DEFAULT_VARNISH_STATE)
|
41
28
|
|
42
|
-
|
43
|
-
|
44
|
-
env[:
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
29
|
+
# prompt for missing settings in local.yml. complain if there are invalid settings.
|
30
|
+
def call(env)
|
31
|
+
if env[:machine].config.hypconfigmgmt.enabled
|
32
|
+
changed = ensure_settings_configured(env)
|
33
|
+
ensure_required_plugins_are_installed(env)
|
34
|
+
if changed
|
35
|
+
env[:ui].info("Your hypernode-vagrant is now configured. Please run \"vagrant up\" again.")
|
36
|
+
return
|
37
|
+
end
|
38
|
+
end
|
39
|
+
@app.call(env)
|
40
|
+
end
|
53
41
|
|
54
42
|
|
55
|
-
def
|
56
|
-
|
57
|
-
|
58
|
-
|
43
|
+
def retrieve_settings()
|
44
|
+
begin
|
45
|
+
return YAML.load_file(H_V_SETTINGS_FILE)
|
46
|
+
rescue Errno::ENOENT
|
47
|
+
return YAML.load_file(H_V_BASE_SETTINGS_FILE)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
59
51
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
52
|
+
def update_settings(settings)
|
53
|
+
File.open(H_V_SETTINGS_FILE, 'w') {|f| f.write settings.to_yaml }
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
def use_default_if_input_empty(input, default)
|
58
|
+
return input == '' ? default.to_s : input
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
def get_setting(env, available, default, ask_message)
|
63
|
+
input = env[:ui].ask(ask_message)
|
64
|
+
value = use_default_if_input_empty(input, default)
|
65
|
+
unless available.map { | v | v.to_s }.include?(value.to_s)
|
66
|
+
available_versions = get_options_string(available)
|
67
|
+
env[:ui].error("The value #{value} is not a valid value. Please enter #{available_versions}")
|
68
|
+
return get_setting(env, available, default, ask_message)
|
69
|
+
end
|
70
|
+
return value
|
71
|
+
end
|
71
72
|
|
72
73
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
input = env[:ui].ask("Is this a PHP #{available_versions} Hypernode? [default #{DEFAULT_PHP_VERSION}]: ")
|
77
|
-
php_version = use_default_if_input_empty(input, DEFAULT_PHP_VERSION)
|
78
|
-
|
79
|
-
case php_version
|
80
|
-
when "5.5"
|
81
|
-
env[:ui].info("Will boot a box with PHP 5.5 installed")
|
82
|
-
when "7.0"
|
83
|
-
env[:ui].info("Will boot a box with PHP 7.0 installed")
|
84
|
-
else
|
85
|
-
env[:ui].error("The value #{php_version} is not a valid PHP version. Please enter #{available_versions}")
|
86
|
-
return get_php_version(env)
|
87
|
-
end
|
88
|
-
return php_version.to_f
|
89
|
-
end
|
74
|
+
def get_options_string(available)
|
75
|
+
return available.map { | v | v.to_s }.join(' or ')
|
76
|
+
end
|
90
77
|
|
91
78
|
|
92
|
-
def
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
end
|
100
|
-
update_settings(settings)
|
101
|
-
end
|
79
|
+
def get_php_version(env)
|
80
|
+
available_versions = get_options_string(AVAILABLE_PHP_VERSIONS)
|
81
|
+
ask_message = "Is this a PHP #{available_versions} Hypernode? [default #{DEFAULT_PHP_VERSION}]: "
|
82
|
+
php_version = get_setting(env, AVAILABLE_PHP_VERSIONS, DEFAULT_PHP_VERSION, ask_message).to_f
|
83
|
+
env[:ui].info("Will boot a box with PHP #{php_version} installed")
|
84
|
+
return php_version
|
85
|
+
end
|
102
86
|
|
103
87
|
|
104
|
-
def
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
88
|
+
def get_magento_version(env)
|
89
|
+
available_versions = get_options_string(AVAILABLE_MAGENTO_VERSIONS)
|
90
|
+
ask_message = "Is this a Magento #{available_versions} Hypernode? [default #{DEFAULT_MAGENTO_VERSION}]: "
|
91
|
+
magento_version = get_setting(env, AVAILABLE_MAGENTO_VERSIONS, DEFAULT_MAGENTO_VERSION, ask_message).to_i
|
92
|
+
message = "Nginx will be configured for Magento #{magento_version}."
|
93
|
+
case magento_version
|
94
|
+
when 1
|
95
|
+
message += " The webdir will be /data/web/public"
|
96
|
+
when 2
|
97
|
+
message += " /data/web/magento2/pub will be symlinked to /data/web/public"
|
98
|
+
end
|
99
|
+
env[:ui].info(message)
|
100
|
+
return magento_version
|
101
|
+
end
|
114
102
|
|
115
103
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
if settings['fs']['disabled_folders'].nil?
|
124
|
-
settings['fs']['disabled_folders'] = Hash.new
|
125
|
-
end
|
126
|
-
if settings['magento']['version'] == 1
|
127
|
-
if !settings['fs']['disabled_folders']['magento1'].nil?
|
128
|
-
settings['fs']['folders']['magento1'] = settings['fs']['disabled_folders']['magento1'].clone
|
129
|
-
settings['fs']['disabled_folders'].delete('magento1')
|
130
|
-
env[:ui].info("Re-enabling fs->disabled_folders->magento1 in the local.yml.")
|
131
|
-
end
|
132
|
-
if !settings['fs']['folders']['magento2'].nil?
|
133
|
-
settings['fs']['disabled_folders']['magento2'] = settings['fs']['folders']['magento2'].clone
|
134
|
-
settings['fs']['folders'].delete('magento2')
|
135
|
-
env[:ui].info("Disabling fs->folders->magento2 in the local.yml because Magento 1 was configured.")
|
136
|
-
end
|
137
|
-
elsif settings['magento']['version'] == 2
|
138
|
-
if !settings['fs']['disabled_folders']['magento2'].nil?
|
139
|
-
settings['fs']['folders']['magento2'] = settings['fs']['disabled_folders']['magento2'].clone
|
140
|
-
settings['fs']['disabled_folders'].delete('magento2')
|
141
|
-
env[:ui].info("Re-enabling fs->disabled_folders->magento2 in the local.yml.")
|
104
|
+
def get_varnish_state(env)
|
105
|
+
ask_message = "Do you want to enable Varnish? Enter true or false [default false]: "
|
106
|
+
varnish_enabled = get_setting(env, AVAILABLE_VARNISH_STATES, DEFAULT_VARNISH_STATE, ask_message)
|
107
|
+
varnish_state = varnish_enabled == 'true' ? true : false
|
108
|
+
message = "Varnish will be #{varnish_state ? 'enabled' : 'disabled'}"
|
109
|
+
if ! varnish_state
|
110
|
+
message += " by loading a nocache vcl."
|
142
111
|
end
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
112
|
+
env[:ui].info(message)
|
113
|
+
return varnish_state
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
# Make sure we don't link /data/web/public on Magento 2 Vagrants
|
118
|
+
# because that dir will be a symlink to /data/web/magento2/pub and
|
119
|
+
# we mount that. On Magento 1 Vagrants we need to make sure we don't
|
120
|
+
# mount /data/web/magento2/pub.
|
121
|
+
def ensure_magento_mounts_configured(env)
|
122
|
+
settings = retrieve_settings()
|
123
|
+
if !settings['fs'].nil? and !settings['fs']['folders'].nil?
|
124
|
+
settings['fs']['disabled_folders'] ||= Hash.new
|
125
|
+
if settings['magento']['version'].to_s == "1"
|
126
|
+
if !settings['fs']['disabled_folders']['magento1'].nil?
|
127
|
+
settings['fs']['folders']['magento1'] = settings['fs']['disabled_folders']['magento1'].clone
|
128
|
+
settings['fs']['disabled_folders'].delete('magento1')
|
129
|
+
env[:ui].info("Re-enabling fs->disabled_folders->magento1 in the local.yml.")
|
130
|
+
end
|
131
|
+
if !settings['fs']['folders']['magento2'].nil?
|
132
|
+
settings['fs']['disabled_folders']['magento2'] = settings['fs']['folders']['magento2'].clone
|
133
|
+
settings['fs']['folders'].delete('magento2')
|
134
|
+
env[:ui].info("Disabling fs->folders->magento2 in the local.yml because Magento 1 was configured.")
|
135
|
+
end
|
136
|
+
elsif settings['magento']['version'].to_s == "2"
|
137
|
+
if !settings['fs']['disabled_folders']['magento2'].nil?
|
138
|
+
settings['fs']['folders']['magento2'] = settings['fs']['disabled_folders']['magento2'].clone
|
139
|
+
settings['fs']['disabled_folders'].delete('magento2')
|
140
|
+
env[:ui].info("Re-enabling fs->disabled_folders->magento2 in the local.yml.")
|
141
|
+
end
|
142
|
+
if !settings['fs']['folders']['magento1'].nil?
|
143
|
+
settings['fs']['disabled_folders']['magento1'] = settings['fs']['folders']['magento1'].clone
|
144
|
+
settings['fs']['folders'].delete('magento1')
|
145
|
+
env[:ui].info("Disabling fs->folders->magento1 in the local.yml because Magento 2 was configured..")
|
146
|
+
end
|
147
|
+
end
|
148
|
+
if settings['fs']['disabled_folders'] == Hash.new
|
149
|
+
settings['fs'].delete('disabled_folders')
|
150
|
+
end
|
147
151
|
end
|
148
|
-
|
149
|
-
if settings['fs']['disabled_folders'] == Hash.new
|
150
|
-
settings['fs'].delete('disabled_folders')
|
152
|
+
update_settings(settings)
|
151
153
|
end
|
152
|
-
end
|
153
|
-
update_settings(settings)
|
154
|
-
end
|
155
154
|
|
156
155
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
end
|
156
|
+
def ensure_attribute_configured(env, name, attribute, available)
|
157
|
+
settings = retrieve_settings()
|
158
|
+
if settings[name][attribute].nil?
|
159
|
+
settings[name][attribute] = yield
|
160
|
+
elsif !available.map { | v | v.to_s }.include?(settings[name][attribute].to_s)
|
161
|
+
env[:ui].error("The #{name} #{attribute} configured in local.yml is invalid.")
|
162
|
+
settings[name][attribute] = yield
|
163
|
+
end
|
164
|
+
update_settings(settings)
|
165
|
+
end
|
168
166
|
|
169
167
|
|
170
|
-
def ensure_setting_exists(name)
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
168
|
+
def ensure_setting_exists(name)
|
169
|
+
settings = retrieve_settings()
|
170
|
+
settings[name] ||= Hash.new
|
171
|
+
update_settings(settings)
|
172
|
+
end
|
173
|
+
|
174
|
+
|
175
|
+
def validate_magento2_root(env)
|
176
|
+
settings = retrieve_settings()
|
177
|
+
if !settings['fs'].nil? and !settings['fs']['folders'].nil?
|
178
|
+
if settings['fs']['folders'].select{ |_, f| f['guest'].start_with?('/data/web/public') }.any? && settings['magento']['version'] == 2
|
179
|
+
env[:ui].info("Can not configure a synced /data/web/public directory with Magento 2, this will be symlinked to /data/web/magento2!")
|
180
|
+
env[:ui].error("Please remove all fs->folders->*->guest paths that start with /data/web/public from your local.yml. Use /data/web/magento2 instead.")
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
177
184
|
|
178
185
|
|
179
|
-
def
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
186
|
+
def inform_if_gatling_not_installed(env)
|
187
|
+
settings = retrieve_settings()
|
188
|
+
if settings['fs']['type'] == 'rsync' and !Vagrant.has_plugin?('vagrant-gatling-rsync')
|
189
|
+
env[:ui].info(<<-HEREDOC
|
190
|
+
'Tip: run "vagrant plugin install vagrant-gatling-rsync" to speed up
|
191
|
+
shared folder operations.\nYou can then sync with "vagrant gatling-rsync-auto"
|
192
|
+
instead of "vagrant rsync-auto" to increase performance
|
193
|
+
HEREDOC
|
194
|
+
)
|
195
|
+
end
|
185
196
|
end
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
|
190
|
-
def ensure_settings_configured(env)
|
191
|
-
old_settings = retrieve_settings()
|
192
|
-
ensure_setting_exists('magento')
|
193
|
-
ensure_magento_version_configured(env)
|
194
|
-
ensure_setting_exists('php')
|
195
|
-
ensure_php_version_configured(env)
|
196
|
-
ensure_setting_exists('varnish')
|
197
|
-
ensure_varnish_state_configured(env)
|
198
|
-
ensure_magento_mounts_configured(env)
|
199
|
-
validate_magento2_root(env)
|
200
|
-
new_settings = retrieve_settings()
|
201
|
-
return new_settings.to_yaml != old_settings.to_yaml
|
202
|
-
end
|
203
197
|
|
204
198
|
|
205
|
-
def
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
199
|
+
def ensure_vagrant_box_type_configured(env)
|
200
|
+
settings = retrieve_settings()
|
201
|
+
case settings['php']['version']
|
202
|
+
when 5.5
|
203
|
+
env[:ui].info("Will use PHP 5.5. If you want PHP 7 instead change the php version in local.yml.")
|
204
|
+
settings['vagrant']['box'] = 'hypernode_php5'
|
205
|
+
settings['vagrant']['box_url'] = 'http://vagrant.hypernode.com/customer/php5/catalog.json'
|
206
|
+
when 7.0
|
207
|
+
env[:ui].info("Will use PHP 7. If you want PHP 5.5 instead change the php version in local.yml.")
|
208
|
+
settings['vagrant']['box'] = 'hypernode_php7'
|
209
|
+
settings['vagrant']['box_url'] = 'http://vagrant.hypernode.com/customer/php7/catalog.json'
|
210
|
+
end
|
211
|
+
update_settings(settings)
|
212
|
+
end
|
213
|
+
|
214
|
+
|
215
|
+
def configure_magento(env)
|
216
|
+
ensure_setting_exists('magento')
|
217
|
+
ensure_attribute_configured(
|
218
|
+
env, 'magento', 'version',
|
219
|
+
AVAILABLE_MAGENTO_VERSIONS
|
220
|
+
) { get_magento_version(env) }
|
221
|
+
end
|
222
|
+
|
223
|
+
|
224
|
+
def configure_php(env)
|
225
|
+
ensure_setting_exists('php')
|
226
|
+
ensure_attribute_configured(
|
227
|
+
env, 'php', 'version',
|
228
|
+
AVAILABLE_PHP_VERSIONS
|
229
|
+
) { get_php_version(env) }
|
230
|
+
end
|
231
|
+
|
232
|
+
|
233
|
+
def configure_varnish(env)
|
234
|
+
ensure_setting_exists('varnish')
|
235
|
+
ensure_attribute_configured(
|
236
|
+
env, 'varnish', 'state',
|
237
|
+
AVAILABLE_VARNISH_STATES
|
238
|
+
) { get_varnish_state(env) }
|
239
|
+
end
|
240
|
+
|
241
|
+
|
242
|
+
def configure_synced_folders(env)
|
243
|
+
ensure_magento_mounts_configured(env)
|
244
|
+
validate_magento2_root(env)
|
245
|
+
inform_if_gatling_not_installed(env)
|
210
246
|
end
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
247
|
|
215
|
-
module VagrantHypconfigmgmt
|
216
|
-
class Command
|
217
248
|
|
218
|
-
def
|
219
|
-
|
220
|
-
|
249
|
+
def configure_vagrant(env)
|
250
|
+
ensure_setting_exists('vagrant')
|
251
|
+
ensure_vagrant_box_type_configured(env)
|
221
252
|
end
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
253
|
+
|
254
|
+
|
255
|
+
def ensure_settings_configured(env)
|
256
|
+
old_settings = retrieve_settings()
|
257
|
+
configure_magento(env)
|
258
|
+
configure_php(env)
|
259
|
+
configure_varnish(env)
|
260
|
+
configure_synced_folders(env)
|
261
|
+
configure_vagrant(env)
|
262
|
+
new_settings = retrieve_settings()
|
263
|
+
return new_settings.to_yaml != old_settings.to_yaml
|
264
|
+
end
|
265
|
+
|
266
|
+
|
267
|
+
def ensure_required_plugins_are_installed(env)
|
268
|
+
RECOMMENDED_PLUGINS.each do |plugin|
|
269
|
+
unless Vagrant.has_plugin?(plugin)
|
270
|
+
env[:ui].info("Installing the #{plugin} plugin.")
|
271
|
+
system("vagrant plugin install #{plugin}")
|
272
|
+
end
|
231
273
|
end
|
232
|
-
@app.call(env)
|
233
274
|
end
|
234
275
|
end
|
235
276
|
end
|