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