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
|
# File 'lib/logical-construct/ground-control/tools.rb', line 21
def define
in_namespace do
namespace :create_plan do
rule %r{\A#{plans_dir}/[^/]*\Z} do |task, args|
cmd("mkdir", "-p", task.name).must_succeed!
end
rule(%r{\A#{plans_dir}/[^/]*/plan\.rake\Z}, [:name] => ['%d']) do |task, args|
require 'logical-construct/target/implementation'
File::open(task.name, "w") do |file|
indent = 16
file.write(" require 'logical-construct/plan'\n include LogicalConstruct::Plan\n\n core = Core.new do |core|\n core.namespace_name = :\#{args[:name]}\n core.plan_rakefile.absolute_path = __FILE__\n end\n\n core.in_namespace do\n #Plan tasks go here\n #\n #Important tasks to make dependencies to:\n\n EOR\n\n Target::Implementation.task_list.each do |task_name|\n file.puts(\" #task :\#{task_name}\")\n end\n\n file.puts(\"end\")\n end\n end\n end\n\n desc \"Create a new plan to be part of a provisioning\"\n task :create_plan, [:name] do |task, args|\n Rake::Task[File::join(plans_dir, args[:name], \"plan.rake\")].invoke(args[:name])\n end\n end\nend\n".gsub(/^#{" "*indent}/,''))
|