43 lines
971 B
Ruby
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
|