class GeoEngineer::Project

Projects are groups of resources used to organize and validate.

A Project contains resources, has arbitrary attributes and validation rules

Attributes

environment[R]
name[RW]
org[RW]

Public Class Methods

new(org, name, environment, &block) click to toggle source
# File lib/geoengineer/project.rb, line 20
def initialize(org, name, environment, &block)
  @org = org
  @name = name
  @environment = environment
  instance_exec(self, &block) if block_given?
  execute_lifecycle(:after, :initialize)
end

Public Instance Methods

all_resources() click to toggle source
# File lib/geoengineer/project.rb, line 44
def all_resources
  [resources, all_template_resources].flatten
end
full_id_name() click to toggle source
# File lib/geoengineer/project.rb, line 28
def full_id_name
  "#{org}_#{name}".tr('-', '_')
end
full_name() click to toggle source
# File lib/geoengineer/project.rb, line 32
def full_name
  "#{org}/#{name}"
end
resource(type, id, &block) click to toggle source
# File lib/geoengineer/project.rb, line 36
def resource(type, id, &block)
  return find_resource(type, id) unless block_given?
  resource = create_resource(type, id, &block)
  resource.project = self
  resource.environment = @environment
  resource
end
to_dot() click to toggle source

dot method

# File lib/geoengineer/project.rb, line 49
def to_dot
  str = ["  subgraph \"cluster_#{full_id_name}\" {"]
  str << "    style = filled; color = lightgrey;"
  str << "    label = <<B><FONT POINT-SIZE=\"24.0\">#{full_name}</FONT></B>>"
  nodes = all_resources.map do |res|
    "    node [label=#{res.short_name.inspect}, shape=\"box\"] #{res.to_ref.inspect};"
  end
  str << nodes
  str << "  }"
  str.join(" // #{full_name} \n")
end