Class: XcodeArchiveCache::BuildGraph::RebuildEvaluator

Inherits:
Object
  • Object
show all
Defined in:
lib/build_graph/rebuild_evaluator.rb

Instance Method Summary collapse

Constructor Details

#initialize(cache_storage) ⇒ RebuildEvaluator

Returns a new instance of RebuildEvaluator.



7
8
9
# File 'lib/build_graph/rebuild_evaluator.rb', line 7

def initialize(cache_storage)
  @cache_storage = cache_storage
end

Instance Method Details

#evaluate_build_graph(graph) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/build_graph/rebuild_evaluator.rb', line 13

def evaluate_build_graph(graph)
  return if graph.root_node.state != :unknown

  # DFS over graph, evaluating dependencies first
  #
  stack = [graph.root_node]

  while stack.length > 0
    last_node = stack.last

    if last_node.state == :evaluating_dependencies
      # dependencies were evaluated, we're good to go
      evaluate(last_node)
      stack.delete_at(stack.length - 1)
    elsif last_node.state == :unknown
      last_node.state = :evaluating_dependencies
      stack += last_node.dependencies.select { |dependency| dependency.state == :unknown }
    else
      stack.delete_at(stack.length - 1)
    end
  end
end