Sha256: 472eaca1fae9e82be3bc21f1ff1bcf503d02d7a698d8e13809267035b6e2fd9a

Contents?: true

Size: 763 Bytes

Versions: 3

Compression:

Stored size: 763 Bytes

Contents

class TaskManager
 
  def initialize(output)
    @output = output
    @tasks = []
  end
  
  def add(task)
    @tasks << task
  end
  
  def run(files)
    @output.start_run;

    @tasks.each do |task|
      
      begin
        break if !run_task(files, task)        
      rescue Exception => ex
        output_exception(ex)
      end
      
    end

  end
  
  def run_task(files, task)
    result = task.run(files)
    return true if result.nil?
      
    @output.add_result(result) 
    return !([:error, :failure].include? result[:state])
  end
  
  def output_exception(ex)
    @output.add_result({
      :state => :error,
      :title => 'Task',
      :summary => 'Exception',
      :first => ex.message,
      :detail => ex.backtrace
    })
  end
  
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
karl-loris-0.0.10 lib/task_manager.rb
karl-loris-0.0.11 lib/task_manager.rb
loris-0.0.12 lib/task_manager.rb