Class: Rake::Puppet
- Inherits:
-
Object
- Object
- Rake::Puppet
- Defined in:
- lib/rspec_puppet_utils/rake/project_tasks.rb
Instance Attribute Summary collapse
-
#excluded_modules ⇒ Object
Returns the value of attribute excluded_modules.
-
#module_path ⇒ Object
Returns the value of attribute module_path.
-
#package_dir ⇒ Object
Returns the value of attribute package_dir.
-
#package_files ⇒ Object
Returns the value of attribute package_files.
-
#package_version ⇒ Object
Returns the value of attribute package_version.
-
#package_versioning ⇒ Object
Returns the value of attribute package_versioning.
Instance Method Summary collapse
-
#initialize ⇒ Puppet
constructor
A new instance of Puppet.
- #load_build_tasks ⇒ Object
- #load_spec_tasks ⇒ Object
- #load_tasks ⇒ Object
- #testable_modules ⇒ Object
Constructor Details
#initialize ⇒ Puppet
Returns a new instance of Puppet.
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 23 def initialize extend Rake::DSL # makes 'namespace' and 'task' methods available to instance @module_path = 'modules' # Deliberately excludes modules-lib dir @excluded_dirs = ['.', '..'] @excluded_modules = [] @package_dir = 'pkg' @package_files = ['modules', 'modules-lib', 'config/environment.conf'] @package_name = 'puppet' @package_version = nil @package_versioning = true end |
Instance Attribute Details
#excluded_modules ⇒ Object
Returns the value of attribute excluded_modules.
11 12 13 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 11 def excluded_modules @excluded_modules end |
#module_path ⇒ Object
Returns the value of attribute module_path.
11 12 13 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 11 def module_path @module_path end |
#package_dir ⇒ Object
Returns the value of attribute package_dir.
12 13 14 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 12 def package_dir @package_dir end |
#package_files ⇒ Object
Returns the value of attribute package_files.
12 13 14 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 12 def package_files @package_files end |
#package_version ⇒ Object
Returns the value of attribute package_version.
12 13 14 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 12 def package_version @package_version end |
#package_versioning ⇒ Object
Returns the value of attribute package_versioning.
12 13 14 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 12 def package_versioning @package_versioning end |
Instance Method Details
#load_build_tasks ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 71 def load_build_tasks raise(ArgumentError, 'Please provide a package_version (e.g. "1.0.0")') if @package_version.nil? # The build_dir (i.e. 'puppet') is the root dir of the files when the zip is extracted build_dir = "#{@package_dir}/puppet" full_package_name = @package_versioning ? "puppet-#{@package_version}.zip" : 'puppet.zip' package_desc = @package_versioning ? full_package_name : "#{full_package_name} v#{@package_version}" namespace :build do # Preps build directory task :prep do puts 'Preparing build' FileUtils.rm_r @package_dir if File.exist?(@package_dir) FileUtils.mkdir_p build_dir @package_files.each {|f| if File.exist? f puts "Copying #{f} to #{build_dir}" FileUtils.cp_r f, build_dir else fail "Could not find #{f} file or directory: Ensure that the package_files list is correct" end } end task :package => [:prep] do # Exclude modules' spec directories as they're not needed once deployed exclude_patterns = '-x puppet/modules/\*/spec/\* puppet/modules-lib/\*/spec/\*' cmds = ["cd #{@package_dir}", '&&', "zip -qr #{full_package_name} . #{exclude_patterns}", '&&', 'cd -'] puts `#{cmds.join(' ')}` end task :cleanup do puts "Cleaning up #{build_dir}/" FileUtils.rm_r build_dir if File.exist?(build_dir) end end desc "Build #{package_desc} without tests" task :quick_build => ['build:package', 'build:cleanup'] do puts "Built #{package_desc}" end desc "Build #{package_desc}" task :build => [:spec, :quick_build] end |
#load_spec_tasks ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 48 def load_spec_tasks modules = testable_modules module_tasks = modules.collect { |m| "#{:spec}:#{m}" } namespace :spec do modules.each { |puppet_module| module_root = "#{@module_path}/#{puppet_module}" opts_path = "#{module_root}/spec/spec.opts" desc "Run #{puppet_module} module specs" RSpec::Core::RakeTask.new puppet_module do |t| t.ruby_opts = "-C#{module_root}" t.rspec_opts = File.exists?(opts_path) ? File.read(opts_path).chomp : '' end } end desc 'Run specs in all modules' task :spec => module_tasks task :default => :spec end |
#load_tasks ⇒ Object
36 37 38 39 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 36 def load_tasks load_spec_tasks load_build_tasks end |
#testable_modules ⇒ Object
41 42 43 44 45 46 |
# File 'lib/rspec_puppet_utils/rake/project_tasks.rb', line 41 def testable_modules raise ArgumentError, 'Excluded modules must be an array' unless @excluded_modules.is_a? Array module_dirs = Dir.entries(@module_path) - @excluded_dirs - @excluded_modules module_dirs.select! {|e| File.directory?("#{@module_path}/#{e}/spec") } module_dirs end |