class Lono::Configset::Strategy::Base

Public Class Methods

new(options={}) click to toggle source
# File lib/lono/configset/strategy/base.rb, line 28
def initialize(options={})
  @options = options
  @configset = options[:configset]
  @root = options[:root]
  @resource = options[:resource] || "FakeResource"
  @blueprint = Lono::Conventions.new(options).blueprint
end

Public Instance Methods

build() click to toggle source
# File lib/lono/configset/strategy/base.rb, line 36
def build
  @evaluation_path = find_evaluation_path # implemented by subclass
  copy_instance_variables
  load_configset_helpers
  init = load # implemented by subclass
  finish_full_structure(init)
end
copy_instance_variables() click to toggle source
# File lib/lono/configset/strategy/base.rb, line 52
def copy_instance_variables
  load_blueprint_predefined_variables
  load_project_predefined_variables
end
finish_full_structure(init) click to toggle source
# File lib/lono/configset/strategy/base.rb, line 45
def finish_full_structure(init)
  full = {"Metadata" => {}}
  full["Metadata"]["AWS::CloudFormation::Init"] = init["AWS::CloudFormation::Init"]
  full["Metadata"]["AWS::CloudFormation::Authentication"] = authentication if authentication # only on dsl
  full.deep_stringify_keys!
end
load_blueprint_predefined_variables() click to toggle source
# File lib/lono/configset/strategy/base.rb, line 57
def load_blueprint_predefined_variables
  evaluate_file("#{@root}/lib/variables.rb")
end
load_configset_helpers() click to toggle source
# File lib/lono/configset/strategy/base.rb, line 71
def load_configset_helpers
  paths = Dir.glob("#{@root}/lib/helpers/**/*.rb")
  paths.sort_by! { |p| p.size } # load possible namespaces first
  paths.each do |path|
    filename = path.sub(%r{.*/lib/helpers/},'').sub('.rb','')
    module_name = filename.camelize

    require path
    self.class.send :include, module_name.constantize
  end
end
load_project_predefined_variables() click to toggle source
# File lib/lono/configset/strategy/base.rb, line 61
def load_project_predefined_variables
  paths = [
    "#{Lono.root}/configs/#{@blueprint}/configsets/variables.rb", # global
    "#{Lono.root}/configs/#{@blueprint}/configsets/variables/#{@configset}.rb", # configset specific
  ]
  paths.each do |path|
    evaluate_file(path)
  end
end