class Producer::Core::Recipe

Attributes

env[R]
tasks[R]

Public Class Methods

compose_macro(name, macro, *base_args) click to toggle source
# File lib/producer/core/recipe.rb, line 13
def compose_macro name, macro, *base_args
  [self, Task].each do |klass|
    klass.class_eval do
      define_method(name) { |*args| send macro, *(base_args + args) }
    end
  end
end
define_macro(name, block) click to toggle source
# File lib/producer/core/recipe.rb, line 5
def define_macro name, block
  [self, Task].each do |klass|
    klass.class_eval do
      define_method(name) { |*args| task name, *args, &block }
    end
  end
end
new(env) click to toggle source
# File lib/producer/core/recipe.rb, line 27
def initialize env
  @env    = env
  @tasks  = []
end

Public Instance Methods

compose_macro(name, macro, *base_args) click to toggle source
# File lib/producer/core/recipe.rb, line 48
def compose_macro name, macro, *base_args
  self.class.class_eval { compose_macro name, macro, *base_args }
end
macro(name, &block) click to toggle source
# File lib/producer/core/recipe.rb, line 44
def macro name, &block
  self.class.class_eval { define_macro name, block }
end
source(filepath) click to toggle source
# File lib/producer/core/recipe.rb, line 32
def source filepath
  instance_eval File.read("./#{filepath}.rb"), "#{filepath}.rb"
end
target(hostname = nil) click to toggle source
# File lib/producer/core/recipe.rb, line 36
def target hostname = nil
  if hostname then env.target ||= hostname else env.target end
end
task(name, *args, &block) click to toggle source
# File lib/producer/core/recipe.rb, line 40
def task name, *args, &block
  Task.evaluate(env, name, *args, &block).tap { |o| @tasks << o }
end
test_macro(name, &block) click to toggle source
# File lib/producer/core/recipe.rb, line 52
def test_macro name, &block
  Condition.define_test(name, block)
end