42 lines
1.1 KiB
Ruby
42 lines
1.1 KiB
Ruby
module Vagrant
|
|
class Action
|
|
module VM
|
|
class Provision
|
|
attr_reader :provisioners
|
|
|
|
def initialize(app, env)
|
|
@app = app
|
|
@env = env
|
|
@env["provision.enabled"] = true if !@env.has_key?("provision.enabled")
|
|
@provisioners = []
|
|
|
|
load_provisioners if provisioning_enabled?
|
|
end
|
|
|
|
def call(env)
|
|
@app.call(env)
|
|
|
|
@provisioners.each do |instance|
|
|
@env.ui.info I18n.t("vagrant.actions.vm.provision.beginning", :provisioner => instance.class)
|
|
instance.provision!
|
|
end
|
|
end
|
|
|
|
def provisioning_enabled?
|
|
!@env["config"].vm.provisioners.empty? && @env["provision.enabled"]
|
|
end
|
|
|
|
def load_provisioners
|
|
@env["config"].vm.provisioners.each do |provisioner|
|
|
@env.ui.info I18n.t("vagrant.actions.vm.provision.enabled", :provisioner => provisioner.shortcut)
|
|
|
|
instance = provisioner.provisioner.new(@env, provisioner.config)
|
|
instance.prepare
|
|
@provisioners << instance
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|