lib/vagrant-boxen/provisioner.rb in vagrant-boxen-0.0.2 vs lib/vagrant-boxen/provisioner.rb in vagrant-boxen-0.0.3

- old
+ new

@@ -1,36 +1,52 @@ module Vagrant module Boxen class Provisioner < Vagrant::Provisioners::Base class Config < Vagrant::Config::Base - def memcached! - @memcached = true + attr_reader :enabled_modules + + def initialize(*args) + super + @enabled_modules = [] end - def memcached? - @memcached + def install(mod) + enable_module module_for(mod).new end + + def enable_module(mod) + @enabled_modules << mod + end + + protected + + def module_for(mod) + Vagrant::Boxen::Modules.const_get classify_string(mod) + end + + def classify_string(string) + string.to_s.split('_').map do |word| + word[0] = word[0].upcase + word + end.join + end end def self.config_class Config end def initialize(env, config, provisioner = nil) super(env, config) - @logger = Log4r::Logger.new("vagrant::provisioners::boxen") - @manifests_dir = "/tmp/vagrant-boxen-#{env['vm'].uuid}" + @manifests_dir = "/tmp/vagrant-boxen-#{env['vm'].uuid}" @puppet_provisioner = provisioner ? provisioner : setup_puppet_provisioner end def prepare Dir.mkdir @manifests_dir unless File.directory? @manifests_dir - if config.memcached? - File.open("#{@manifests_dir}/site.pp", 'w') { |f| f.print "class { 'memcached': }" } - else - File.open("#{@manifests_dir}/site.pp", 'w') { |f| f.print "" } - end + builder = ManifestBuilder.new(config) + File.open("#{@manifests_dir}/site.pp", 'w') { |f| f.print builder.build } @puppet_provisioner.prepare end def provision! @puppet_provisioner.provision! @@ -40,14 +56,17 @@ def setup_puppet_provisioner config = Vagrant::Provisioners::Puppet::Config.new config.manifests_path = @manifests_dir config.manifest_file = "site.pp" - config.module_path = File.join(File.expand_path('../../../', __FILE__), 'puppet/modules') + config.module_path = File.join(File.expand_path('../../../', __FILE__), 'puppet-modules') # The root path to be used on the guest machine, changed to avoid # collision with the default path for puppet provisioner config.pp_path = '/tmp/vagrant-boxen-puppet' - config.options << [ '--verbose', '--debug '] if ENV['DEBUG'] == '1' + + config.options << [ '--verbose ' ] if ENV['VERBOSE'] == '1' + config.options << [ '--debug '] if ENV['DEBUG'] == '1' + Vagrant::Provisioners::Puppet.new(env, config) end end end end