class Cult::CommanderSync

Attributes

nodes[R]
project[R]

Public Class Methods

new(project:, nodes:) click to toggle source
# File lib/cult/commander_sync.rb, line 4
def initialize(project:, nodes:)
  @project, @nodes = project, nodes
end

Public Instance Methods

required_passes(roles) click to toggle source
# File lib/cult/commander_sync.rb, line 21
def required_passes(roles)
  # searches through every node and extracts which passes have to be ran
  # to satisfy every event task
  nodes.map(&:build_order).flatten.uniq
       .select { |r| roles.nil? ? true : roles.include?(r) }
       .map(&:event_tasks).flatten.map(&:pass).uniq.sort
end
sync!(roles: nil, passes: nil) click to toggle source
# File lib/cult/commander_sync.rb, line 8
def sync!(roles: nil, passes: nil)
  roles ||= Cult.project.roles
  passes ||= required_passes(roles)

  passes.each do |pass|
    puts Rainbow("Executing pass #{pass}").yellow
    Cult.paramap(nodes) do |node|
      c = Commander.new(project: project, node: node)
      c.sync!(pass: pass, roles: roles)
    end
  end
end