def self.safe_create_rakefile
content = "require 'rake'\nrequire 'rspec/core/rake_task'\n\ntask :spec => 'spec:all'\ntask :default => :spec\n\nnamespace :spec do\ntargets = []\nDir.glob('./spec/*').each do |dir|\nnext unless File.directory?(dir)\ntarget = File.basename(dir)\ntarget = \"_\#{target}\" if target == \"default\"\ntargets << target\nend\n\ntask :all => targets\ntask :default => :all\n\ntargets.each do |target|\noriginal_target = target == \"_default\" ? target[1..-1] : target\ndesc \"Run serverspec tests to \#{original_target}\"\nRSpec::Core::RakeTask.new(target.to_sym) do |t|\nENV['TARGET_HOST'] = original_target\nt.pattern = \"spec/\#{original_target}/*_spec.rb\"\nend\nend\nend\n"
if File.exists? 'Rakefile'
old_content = File.read('Rakefile')
if old_content != content
$stderr.puts '!! Rakefile already exists and differs from template'
end
else
File.open('Rakefile', 'w') do |f|
f.puts content
end
puts ' + Rakefile'
end
end