Sha256: 31849396817f8213dfc3a39999d72f924f4174b7f7f78c3de276586577c4fef2

Contents?: true

Size: 1.33 KB

Versions: 4

Compression:

Stored size: 1.33 KB

Contents

class Jets::Dotenv
  class Var
    extend Memoist
    include Jets::AwsServices
    include Jets::Util::Logging

    attr_reader :raw_key, :raw_value
    def initialize(raw_key, raw_value)
      @raw_key, @raw_value = raw_key, raw_value
    end

    def name
      @raw_key
    end

    def value
      ssm? ? ssm_value : @raw_value
    end
    memoize :value

    SSM_VARIABLE_REGEXP = /^SSM:(.*)/i
    def ssm_name
      if @raw_value == "SSM"
        # "/#{Jets.project.name}/#{Jets.env}/#{@raw_key}"
        Convention.new.ssm_name(@raw_key)
      else
        value = @raw_value.sub(/SSM:/i, "")
        if value.start_with?("/")
          value
        else
          # "/#{Jets.project.name}/#{Jets.env}/#{value}"
          Convention.new.ssm_name(value)
        end
      end
    end

    def ssm_value
      return "fake-ssm-value" if ENV["JETS_NO_INTERNET"]

      name = ssm_name
      resp = ssm.get_parameter(name: name, with_decryption: true)
      resp.parameter.value
    rescue Aws::SSM::Errors::ParameterNotFound
      @ssm_missing = true
      nil
    rescue Aws::SSM::Errors::ValidationException
      puts "ERROR: Invalid SSM parameter name: #{name.inspect}".color(:red)
      raise
    end

    def ssm_missing?
      value # trigger memoization
      !!@ssm_missing
    end

    def ssm?
      @raw_value&.start_with?("SSM")
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
jets-6.0.5 lib/jets/dotenv/var.rb
jets-6.0.4 lib/jets/dotenv/var.rb
jets-6.0.3 lib/jets/dotenv/var.rb
jets-6.0.2 lib/jets/dotenv/var.rb