Sha256: 4e22ff9b3481736234c6060f8df03eb6768a0d6653cafef29ea98dd372bc6fee
Contents?: true
Size: 1.7 KB
Versions: 3
Compression:
Stored size: 1.7 KB
Contents
class TaskManager def initialize(output) @output = output @tasks = [] @fail_index = -1 end def add(task) @tasks << task end def run(files) @num_tasks_run = 0 @tasks.each_index do |index| task = @tasks[index] # Don't run if this task is after the last failed task if @fail_index >= 0 && @fail_index < index @output.add_result(@fail_result) break end result = nil begin result = run_task(files, task) rescue Exception => ex result = build_exception_result ex @output.add_result result end next if result.nil? if [:error, :failure].include? result[:state] # Remember this task as the one that failed # And end this current run of tasks @fail_index = index @fail_result = result @fail_result[:state] = :error @fail_result[:title] = 'Fix ' + @fail_result[:title] + ' to run other tasks' break elsif result[:state] == :success # reset fail index @fail_index = -1 if index == @fail_index end end end def run_task(files, task) result = task.run(files) return result if result.nil? task_run @output.add_result(result) return result end def task_run @num_tasks_run += 1 if (@num_tasks_run == 1) @output.start_run end end def build_exception_result(ex) return { :state => :error, :title => 'Task', :summary => 'Exception', :first => ex.message, :detail => ex.backtrace } end def output_exception(ex) @output.add_result build_exception_result ex end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
loris-0.2.0 | lib/task_manager.rb |
loris-0.1.7 | lib/task_manager.rb |
loris-0.1.5 | lib/task_manager.rb |