class Tataru::TopDsl

human representation of resources

Attributes

resources[R]

Public Class Methods

new(pool) click to toggle source
# File lib/tataru/top_dsl.rb, line 8
def initialize(pool)
  @resources = {}
  @pool = pool
end

Public Instance Methods

dep_graph() click to toggle source
# File lib/tataru/top_dsl.rb, line 25
def dep_graph
  @resources.map do |name, resource_representation|
    deps = Set.new
    resource_representation.properties.each do |_key, value|
      deps += value.dependencies
    end
    [name, deps.to_a]
  end.to_h
end
resource(symbol, name, &block) click to toggle source
# File lib/tataru/top_dsl.rb, line 13
def resource(symbol, name, &block)
  unless @pool.resource_desc_exist?(symbol)
    raise "no such resource: #{symbol}"
  end
  raise "already defined: #{name}" if @resources.key? name

  resource = ResourceDsl.new(name, @pool.resource_desc_for(symbol).new)
  resource.instance_eval(&block) if block

  @resources[name] = resource.representation
end