* Add Action base class; * Implement Task::DSL.define_action(keyword, klass); * Add Task::DSL#actions accessor; * Apply task DSL actions when Task instances are evaluated.
19 lines
305 B
Ruby
19 lines
305 B
Ruby
module Producer
|
|
module Core
|
|
class Task
|
|
attr_reader :name
|
|
|
|
def initialize(name, &block)
|
|
@name = name
|
|
@block = block
|
|
end
|
|
|
|
def evaluate(env)
|
|
dsl = DSL.new(&@block)
|
|
dsl.evaluate(env)
|
|
dsl.actions.map(&:apply)
|
|
end
|
|
end
|
|
end
|
|
end
|