Implement `macro' recipe keyword
This commit is contained in:
@@ -34,8 +34,14 @@ module Producer
|
||||
env.target = hostname
|
||||
end
|
||||
|
||||
def task(name, &block)
|
||||
@tasks << Task.evaluate(name, env, &block)
|
||||
def task(name, *args, &block)
|
||||
@tasks << Task.evaluate(name, env, *args, &block)
|
||||
end
|
||||
|
||||
def macro(name, &block)
|
||||
define_singleton_method(name) do |*args|
|
||||
task("#{name}", *args, &block)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@@ -2,9 +2,9 @@ module Producer
|
||||
module Core
|
||||
class Task
|
||||
class << self
|
||||
def evaluate(name, env, &block)
|
||||
def evaluate(name, env, *args, &block)
|
||||
dsl = DSL.new(&block)
|
||||
dsl.evaluate(env)
|
||||
dsl.evaluate(env, *args)
|
||||
Task.new(name, dsl.actions, dsl.condition)
|
||||
end
|
||||
end
|
||||
|
@@ -23,9 +23,9 @@ module Producer
|
||||
@condition = true
|
||||
end
|
||||
|
||||
def evaluate(env)
|
||||
def evaluate(env, *args)
|
||||
@env = env
|
||||
instance_eval &@block
|
||||
instance_exec *args, &@block
|
||||
end
|
||||
|
||||
def condition(&block)
|
||||
|
Reference in New Issue
Block a user