class Orchestra::RunList

Attributes

result[R]

Public Class Methods

build(steps, result, input_names) click to toggle source
# File lib/orchestra/run_list.rb, line 3
def self.build steps, result, input_names
  builder = Builder.new result, input_names
  builder.merge! steps
  builder.build
end
new(steps, result) click to toggle source
# File lib/orchestra/run_list.rb, line 13
def initialize steps, result
  @result = result
  @steps = steps
  @steps.freeze
  freeze
end

Public Instance Methods

dependencies() click to toggle source
# File lib/orchestra/run_list.rb, line 29
def dependencies
  optional = collect_from_steps :optional_dependencies
  required = collect_from_steps :required_dependencies
  (optional + required).uniq
end
each(&block) click to toggle source
# File lib/orchestra/run_list.rb, line 20
def each &block
  return to_enum :each unless block_given?
  @steps.each &block
end
optional_dependencies() click to toggle source
# File lib/orchestra/run_list.rb, line 35
def optional_dependencies
  collect_from_steps :optional_dependencies
end
provisions() click to toggle source
# File lib/orchestra/run_list.rb, line 39
def provisions
  collect_from_steps :provisions
end
required_dependencies() click to toggle source
# File lib/orchestra/run_list.rb, line 43
def required_dependencies
  required_deps = collect_from_steps :required_dependencies
  required_deps - optional_dependencies - provisions
end
step_names() click to toggle source
# File lib/orchestra/run_list.rb, line 25
def step_names
  @steps.keys
end

Private Instance Methods

collect_from_steps(method_name) click to toggle source
# File lib/orchestra/run_list.rb, line 50
def collect_from_steps method_name
  set = @steps.each_with_object Set.new do |(_, step), set|
    deps = step.public_send method_name
    deps.each &set.method(:<<)
  end
  set.to_a.tap &:sort!
end