Class: Bowler::DependencyTree

Inherits:
Object
  • Object
show all
Defined in:
lib/bowler/dependency_tree.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(definition) ⇒ DependencyTree

Returns a new instance of DependencyTree.



12
13
14
# File 'lib/bowler/dependency_tree.rb', line 12

def initialize(definition)
  @definition = definition
end

Class Method Details

.load(absolute_path = nil) ⇒ Object

Load the Pinfile



6
7
8
9
10
# File 'lib/bowler/dependency_tree.rb', line 6

def self.load(absolute_path = nil)
  absolute_path ||= File.join( Dir.pwd, 'Pinfile' )
  definition = DSL.evaluate(absolute_path)
  self.new(definition)
end

Instance Method Details

#dependencies_for(processes, visited = []) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/bowler/dependency_tree.rb', line 16

def dependencies_for(processes, visited = [])
  return [] unless processes
  (processes - visited).map { |p|
    unless @definition.processes.include?(p)
      raise PinfileError, "process #{p} not found"
    end

    [dependencies_for(@definition.tree[p], visited + [p]), p]
  }.flatten.compact.uniq
end