2014-09-26 10:26:00 +00:00

43 lines
971 B
Ruby

module Producer
module Core
class Worker
DRY_RUN_WARNING =
'running in dry run mode, actions will NOT be applied'.freeze
def initialize(env)
@env = env
end
def process(tasks)
@env.log DRY_RUN_WARNING, :warn if @env.dry_run?
tasks.each { |t| process_task t }
end
def process_task(task, indent_level = 0)
if task.condition_met?
log "Task: `#{task}' applying...", indent_level
task.actions.each do |e|
case e
when Task then process_task e, indent_level + 2
else
log " action: #{e}", indent_level
e.apply unless @env.dry_run?
end
end
else
log "Task: `#{task}' skipped", indent_level
end
end
private
def log(message, indent_level)
message = [' ' * indent_level, message].join
@env.log message
end
end
end
end