class Orchestra::RunList::Builder

Attributes

input_names[RW]

Public Class Methods

new(result, input_names = []) click to toggle source
# File lib/orchestra/run_list.rb, line 61
def initialize result, input_names = []
  @input_names = input_names
  @steps_hash = {}
  @required = Set.new [result]
  @result = result
  freeze
end

Public Instance Methods

[]=(name, step) click to toggle source
# File lib/orchestra/run_list.rb, line 75
def []= name, step
  @steps_hash[name] = step
end
build() click to toggle source
# File lib/orchestra/run_list.rb, line 87
def build
  sort!
  prune!
  RunList.new @steps_hash, @result
end
merge!(steps) click to toggle source
# File lib/orchestra/run_list.rb, line 69
def merge! steps
  steps.each do |name, step|
    self[name] = step
  end
end
prune!() click to toggle source
# File lib/orchestra/run_list.rb, line 98
def prune!
  steps.reverse_each.with_object [] do |step, removed|
    removed.<< remove step and next unless required? step
    require step
  end
end
remove(step) click to toggle source
# File lib/orchestra/run_list.rb, line 105
def remove step
  @steps_hash.reject! do |_, n| n == step end
  step
end
require(step) click to toggle source
# File lib/orchestra/run_list.rb, line 110
def require step
  supplied_by_input = input_names.method :include?
  required_deps = step.required_dependencies.reject &supplied_by_input
  @required.merge required_deps
  required = @required.method :include?
  @required.merge step.optional_dependencies.reject &required
  true
end
required?(step) click to toggle source
# File lib/orchestra/run_list.rb, line 119
def required? step
  required = @required.method :include?
  step.provisions.any? &required
end
sort!() click to toggle source
# File lib/orchestra/run_list.rb, line 93
def sort!
  sorter = Sorter.new @steps_hash
  sorter.sort!
end
step_names() click to toggle source
# File lib/orchestra/run_list.rb, line 79
def step_names
  @steps_hash.keys
end
steps() click to toggle source
# File lib/orchestra/run_list.rb, line 83
def steps
  @steps_hash.values
end