Class: Bigrig::DependencyGraph

Inherits:
Object
  • Object
show all
Defined in:
lib/bigrig/dependency_graph.rb

Instance Method Summary collapse

Constructor Details

#initialize(containers) ⇒ DependencyGraph

Returns a new instance of DependencyGraph.



3
4
5
6
# File 'lib/bigrig/dependency_graph.rb', line 3

def initialize(containers)
  @containers = containers
  @map = containers.each_with_object({}) { |e, o| o[e.name] = e }
end

Instance Method Details

#resolveObject



8
9
10
11
12
# File 'lib/bigrig/dependency_graph.rb', line 8

def resolve
  resolved = []
  @containers.each { |c| resolve_deps(c, resolved) unless resolved.include? c.name }
  resolved.map { |n| @map[n] }
end

#resolve_deps(container, resolved) ⇒ Object



14
15
16
17
18
19
# File 'lib/bigrig/dependency_graph.rb', line 14

def resolve_deps(container, resolved)
  container.dependencies.each do |dep_name|
    resolve_deps @map[dep_name], resolved unless resolved.include? dep_name
  end
  resolved << container.name
end