Sha256: 738240150b930f36c80400b217ad79b496d244e42f69f190a1f12f435c6b4fd5

Contents?: true

Size: 1.06 KB

Versions: 2

Compression:

Stored size: 1.06 KB

Contents

module Lono
  class Names
    extend Memoist

    attr_reader :blueprint
    def initialize(options={})
      @options = options
      @blueprint = options[:blueprint]
    end

    def stack
      expansion(Lono.config.names.stack)
    end
    memoize :stack

    def expansion(string)
      return string unless string.is_a?(String) # in case of nil

      string = string.dup
      vars = string.scan(/:\w+/) # => [":APP", ":BLUEPRINT", :ENV"]
      vars.each do |var|
        string.gsub!(var, var_value(var))
      end
      strip(string)
    end

    def var_value(unexpanded)
      name = unexpanded.sub(':','').downcase
      if respond_to?(name)
        value = send(name).to_s
      else
        unexpanded
      end
    end

    def strip(string)
      string.sub(/^-+/,'').sub(/-+$/,'') # remove leading and trailing -
            .gsub(%r{-+},'-') # remove double dashes are more. IE: -- => -
            .gsub('_','-')    # underscores are not allowed in CloudFormation stack names
    end

    def app
      Lono.app
    end

    def env
      Lono.env
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lono-8.0.0.pre.rc2 lib/lono/names.rb
lono-8.0.0.pre.rc1 lib/lono/names.rb