37 lines
713 B
Ruby
37 lines
713 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 :sh, Actions::ShellCommand
|
|
|
|
attr_accessor :actions
|
|
|
|
def initialize(&block)
|
|
@block = block
|
|
@actions = []
|
|
end
|
|
|
|
def evaluate(env)
|
|
@env = env
|
|
instance_eval &@block
|
|
rescue ConditionNotMetError
|
|
end
|
|
|
|
private
|
|
|
|
def condition(&block)
|
|
fail ConditionNotMetError unless block.call
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|