52 lines
1.3 KiB
Ruby
52 lines
1.3 KiB
Ruby
require 'rubygems'
|
|
require 'puppetlabs_spec_helper/rake_tasks'
|
|
|
|
def io_popen(command)
|
|
IO.popen(command) do |io|
|
|
io.each do |line|
|
|
print line
|
|
yield line if block_given?
|
|
end
|
|
end
|
|
end
|
|
|
|
# Customize lint option
|
|
task :lint do
|
|
PuppetLint.configuration.send("disable_80chars")
|
|
PuppetLint.configuration.send("disable_class_parameter_defaults")
|
|
end
|
|
|
|
desc "Validate manifests, templates, and ruby files in lib."
|
|
task :validate do
|
|
Dir['manifests/**/*.pp'].each do |manifest|
|
|
sh "puppet parser validate --noop #{manifest}"
|
|
end
|
|
Dir['lib/**/*.rb'].each do |lib_file|
|
|
sh "ruby -c #{lib_file}"
|
|
end
|
|
Dir['templates/**/*.erb'].each do |template|
|
|
sh "erb -P -x -T '-' #{template} | ruby -c"
|
|
end
|
|
end
|
|
|
|
# Initialize vagrant instance for testing
|
|
desc "Powers on Vagrant VMs with specific manifests"
|
|
task :vagrant, :manifest do |t, args|
|
|
Rake::Task["spec_prep"].execute
|
|
|
|
prefix = "VAGRANT_MANIFEST='#{args[:manifest]||'init.pp'}'"
|
|
|
|
puts args[:manifest]
|
|
provision = false
|
|
io_popen("export #{prefix}; vagrant up --provider=vmware_fusion") do |line|
|
|
provision = true if line =~ /Machine is already running./
|
|
end
|
|
io_popen("export #{prefix}; vagrant provision") if provision
|
|
end
|
|
|
|
# Cleanup vagrant environment
|
|
task :vagrant_clean do
|
|
`vagrant destroy -f`
|
|
Rake::Task["spec_clean"].execute
|
|
end
|