class Omgcnb::ResolveDependencies
Public Class Methods
new(buildpacks)
click to toggle source
# File lib/omgcnb/resolve_dependencies.rb, line 5 def initialize(buildpacks) @order = [] @unsolved = buildpacks.select(&:needs_release?) @solved = buildpacks - @unsolved @buildpacks = buildpacks given_buildpacks = buildpacks.flat_map {|b| b.name } @buildpacks.each do |buildpack| depends_diff = buildpack.depends_on - given_buildpacks raise "Cannot satisfy '#{buildpack.name}' missing: #{depends_diff}" unless depends_diff.empty? end end
Public Instance Methods
call()
click to toggle source
# File lib/omgcnb/resolve_dependencies.rb, line 18 def call while @unsolved.any? found = @unsolved.select { |buildpack| (buildpack.depends_on - @solved.map(&:name)).empty? } @order.concat(found) @solved.concat(found) @unsolved -=found end end
solution()
click to toggle source
# File lib/omgcnb/resolve_dependencies.rb, line 29 def solution call @order end