Skip to content
This repository
tag: 0.6.0
Fetching contributors…

Cannot retrieve contributors at this time

file 138 lines (120 sloc) 3.099 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
gems = %w[chef chef-server-slice chef-server]
require 'rubygems'
require 'cucumber/rake/task'

desc "Build the chef gems"
task :gem do
  gems.each do |dir|
    Dir.chdir(dir) { sh "rake package" }
  end
end
 
desc "Install the chef gems"
task :install do
  gems.each do |dir|
    Dir.chdir(dir) { sh "rake install" }
  end
end

desc "Uninstall the chef gems"
task :uninstall do
  gems.reverse.each do |dir|
    Dir.chdir(dir) { sh "rake uninstall" }
  end
end

desc "Run the rspec tests"
task :spec do
  gems.each do |dir|
    Dir.chdir(dir) { sh "rake spec" }
  end
end

def start_dev_environment(type="normal")
  @couchdb_server_pid = nil
  @chef_server_pid = nil
  @chef_indexer_pid = nil
  @stompserver_pid = nil
  
  ccid = fork
  if ccid
    @couchdb_server_pid = ccid
  else
    exec("couchdb")
  end

  scid = fork
  if scid
    @stompserver_pid = scid
  else
    exec("stompserver")
  end

  mcid = fork
  if mcid # parent
    @chef_indexer_pid = mcid
  else # child
    case type
    when "normal"
      exec("chef-indexer -l debug")
    when "features"
      exec("chef-indexer -c #{File.join(File.dirname(__FILE__), "features", "data", "config", "server.rb")} -l debug")
    end
  end

  mcid = fork
  if mcid # parent
    @chef_server_pid = mcid
  else # child
    case type
    when "normal"
      exec("chef-server -l debug -N -c 2")
    when "features"
      exec("chef-server -C #{File.join(File.dirname(__FILE__), "features", "data", "config", "server.rb")} -l debug -N -c 2")
      
    end
  end

  puts "Running Chef at #{@chef_server_pid}"
  puts "Running Chef Indexer at #{@chef_indexer_pid}"
  puts "Running CouchDB at #{@couchdb_server_pid}"
  puts "Running Stompserver at #{@stompserver_pid}"
end

def stop_dev_environment
  puts "Stopping CouchDB"
  Process.kill("KILL", @couchdb_server_pid)
  puts "Stopping Stomp server"
  Process.kill("KILL", @stompserver_pid)
  puts "Stopping Chef Server"
  Process.kill("INT", @chef_server_pid)
  puts "Stopping Chef Indexer"
  Process.kill("INT", @chef_indexer_pid)
  puts "\nCouchDB, Stomp, Chef Server and Chef Indexer killed - have a nice day!"
end

def wait_for_ctrlc
  puts "Hit CTRL-C to destroy development environment"
  trap("CHLD", "IGNORE")
  trap("INT") do
    stop_dev_environment
    exit 1
  end
  while true
    sleep 10
  end
end

desc "Run a Devel instance of Chef"
task :dev => "dev:install" do
  start_dev_environment
  wait_for_ctrlc
end

namespace :dev do
  desc "Install a Devel instance of Chef with the example-repository"
  task :install do
    gems.each do |dir|
      Dir.chdir(dir) { sh "rake install" }
    end
    Dir.chdir("example-repository") { sh("rake install") }
  end

  
  desc "Install a test instance of Chef for doing features against"
  task :features do
    gems.each do |dir|
      Dir.chdir(dir) { sh "rake install" }
    end
    start_dev_environment("features")
    wait_for_ctrlc
  end
end

Cucumber::Rake::Task.new(:features) do |t|
  t.step_pattern = 'features/steps/**/*.rb'
  supportdir = 'features/support'
  t.cucumber_opts = "--format pretty -r #{supportdir}"
end
Something went wrong with that request. Please try again.