Sha256: 57f1e52b5204b02891c27d01ab41dc76e6deaf5f5e8484e9e1fe9a153545ef4a

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

class Terraspace::Cloud::Api
  module Concern
    extend Memoist
    include Errors
    include Record
    include Validate

    def api
      validate("stack", cloud_stack_name)
      @options = @options.merge(
        app: Terraspace.app,
        role: Terraspace.role,
        env: Terraspace.env,
        extra: Terraspace.extra,
        region: region,
        name: cloud_stack_name,
      )
      @options.reject! { |k,v| v.nil? }
      Terraspace::Cloud::Api.new(@options) # @options are CLI options
    end

    def cloud_stack_name
      pattern = Terraspace.config.cloud.stack
      expanded = expander.expansion(pattern) # pattern is a String that contains placeholders for substitutions
      expanded.gsub(%r{-+},'-') # remove double dashes are more. IE: -- -> -
              .sub(/^-+/,'').sub(/-+$/,'') # remove leading and trailing -
    end

    def region
      expander.expansion(":REGION")
    end

    def expander
      Terraspace::Compiler::Expander.autodetect(@mod)
    end
    memoize :expander
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
terraspace-2.0.3 lib/terraspace/cloud/api/concern.rb
terraspace-2.0.2 lib/terraspace/cloud/api/concern.rb
terraspace-2.0.1 lib/terraspace/cloud/api/concern.rb
terraspace-2.0.0 lib/terraspace/cloud/api/concern.rb