class Spacelift::Policy::Collection

Collection is a singleton instance combining multiple rules. It's defined this way to allow pulling policy from multiple files in no particular order.

Public Class Methods

new() click to toggle source
# File lib/spacelift/policy/policy.rb, line 28
def initialize
  @rules = []
  @violations = []
end

Public Instance Methods

ensure(name, &block) click to toggle source
# File lib/spacelift/policy/policy.rb, line 33
def ensure(name, &block)
  raise Error, "definition not provided for rule '#{name}'" unless block

  @rules << Rule.new(name, &block)
end
process(resources) click to toggle source
# File lib/spacelift/policy/policy.rb, line 39
def process(resources)
  raise Error, 'no rules defined' if @rules.empty?

  resources.each { |resource| process_resource(resource) }
  @violations
end

Private Instance Methods

process_resource(resource) click to toggle source
# File lib/spacelift/policy/policy.rb, line 48
def process_resource(resource)
  @rules.each do |rule|
    ok, violation = rule.process(resource)
    @violations << violation unless ok
  end
end