39 lines
829 B
Ruby
39 lines
829 B
Ruby
module Producer
|
|
module Core
|
|
class Task
|
|
class DSL
|
|
class << self
|
|
def define_action(keyword, klass)
|
|
define_method(keyword) do |*args|
|
|
@actions << klass.new(@env, *args)
|
|
end
|
|
end
|
|
end
|
|
|
|
define_action :echo, Actions::Echo
|
|
define_action :sh, Actions::ShellCommand
|
|
|
|
define_action :file_write, Actions::FileWriter
|
|
|
|
attr_accessor :actions
|
|
|
|
def initialize(&block)
|
|
@block = block
|
|
@actions = []
|
|
@condition = true
|
|
end
|
|
|
|
def evaluate(env)
|
|
@env = env
|
|
instance_eval &@block
|
|
end
|
|
|
|
def condition(&block)
|
|
@condition = Condition.evaluate(@env, &block) if block
|
|
@condition
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|