Class: R10K::TaskRunner

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/r10k/task_runner.rb

Constant Summary

Constants included from Logging

Logging::LOG_LEVELS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Logging

formatter, included, level, level=, levels, #logger, #logger_name, outputter, parse_level

Constructor Details

#initialize(opts) ⇒ TaskRunner

Returns a new instance of TaskRunner.



11
12
13
14
15
16
17
18
19
# File 'lib/r10k/task_runner.rb', line 11

def initialize(opts)
  @tasks     = []
  @succeeded = true
  @errors    = {}

  @trace = opts.delete(:trace)

  raise "Unrecognized options: #{opts.keys.join(', ')}" unless opts.empty?
end

Instance Attribute Details

#succeeded=(value) ⇒ Object (writeonly)

Sets the attribute succeeded

Parameters:

  • value

    the value to set the attribute succeeded to.



9
10
11
# File 'lib/r10k/task_runner.rb', line 9

def succeeded=(value)
  @succeeded = value
end

Instance Method Details

#append_task(task) ⇒ Object



49
50
51
# File 'lib/r10k/task_runner.rb', line 49

def append_task(task)
  @tasks << task
end

#exit_valueObject



68
69
70
# File 'lib/r10k/task_runner.rb', line 68

def exit_value
  @succeeded ? 0 : 1
end

#insert_task_after(task_index, new_task) ⇒ Object

Parameters:

  • task_index (R10K::Task)

    The task to insert the task after

  • new_task (R10K::Task)

    The task to insert



55
56
57
58
59
60
61
62
# File 'lib/r10k/task_runner.rb', line 55

def insert_task_after(task_index, new_task)
  if (index = @tasks.index(task_index))
    index += 1
    @tasks.insert(index, new_task)
  else
    @tasks.insert(0, new_task)
  end
end

#prepend_task(task) ⇒ Object



45
46
47
# File 'lib/r10k/task_runner.rb', line 45

def prepend_task(task)
  @tasks.unshift task
end

#runObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/r10k/task_runner.rb', line 21

def run
  catch :abort do
    until @tasks.empty?
      current = @tasks.first
      current.task_runner = self
      begin
        current.call
      rescue Interrupt => e
        logger.error "Aborted!"
        $stderr.puts e.backtrace.join("\n").red if @trace
        @succeeded = false
        throw :abort
      rescue => e
        logger.error "Task #{current} failed while running: #{e.message}"
        $stderr.puts e.backtrace.join("\n").red if @trace

        @errors[current] = e
        @succeeded = false
      end
      @tasks.shift
    end
  end
end

#succeeded?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/r10k/task_runner.rb', line 64

def succeeded?
  @succeeded
end