Class: Build::Graph::Task

Inherits:
Object
  • Object
show all
Defined in:
lib/build/graph/walker.rb

Overview

A task is a specific process and scope applied to a graph node.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(controller, walker, node) ⇒ Task

Returns a new instance of Task.



129
130
131
132
133
134
135
136
137
138
# File 'lib/build/graph/walker.rb', line 129

def initialize(controller, walker, node)
  @controller = controller
  @node = node
  @walker = walker

  # If the execution of the node fails, this is where we save the error:
  @error = nil

  @children = []
end

Instance Attribute Details

#childrenObject (readonly)

Returns the value of attribute children.



140
141
142
# File 'lib/build/graph/walker.rb', line 140

def children
  @children
end

Instance Method Details

#exitObject



171
172
173
174
175
176
177
178
179
180
181
# File 'lib/build/graph/walker.rb', line 171

def exit
  if @error || any_child_failed? || any_inputs_failed?
    @node.fail!
  elsif wet?
    @node.clean!
  end
  
  @walker.exit(@node)
  
  @walker.count += 1
end

#inputsObject



142
143
144
# File 'lib/build/graph/walker.rb', line 142

def inputs
  @node.inputs
end

#outputsObject



146
147
148
# File 'lib/build/graph/walker.rb', line 146

def outputs
  @node.outputs
end

#visitObject

Derived task should override this function to provide appropriate behaviour.



155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# File 'lib/build/graph/walker.rb', line 155

def visit
  wait_for_inputs

  # If all inputs were good, we can update the node.
  unless any_inputs_failed?
    begin
      yield
    rescue TransientError => error
      $stderr.puts Rainbow("Error: #{error.inspect}").red
      @error = error
    end
  end

  wait_for_children
end

#wet?Boolean

Returns:

  • (Boolean)


150
151
152
# File 'lib/build/graph/walker.rb', line 150

def wet?
  @node.dirty?
end