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.



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

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.



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

def succeeded=(value)
  @succeeded = value
end

Instance Method Details

#append_task(task) ⇒ Object



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

def append_task(task)
  @tasks << task
end

#exit_valueObject



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

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



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

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



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

def prepend_task(task)
  @tasks.unshift task
end

#runObject



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

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)


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

def succeeded?
  @succeeded
end