Sha256: 270c4b51366b6d52face7ae588d1331529fbea3cc2b8a78e334fe8083488f627

Contents?: true

Size: 1015 Bytes

Versions: 2

Compression:

Stored size: 1015 Bytes

Contents

class Kamal::Configuration::Env
  attr_reader :secrets_keys, :clear, :secrets_file
  delegate :argumentize, to: Kamal::Utils

  def self.from_config(config:, secrets_file: nil)
    secrets_keys = config.fetch("secret", [])
    clear = config.fetch("clear", config.key?("secret") ? {} : config)

    new clear: clear, secrets_keys: secrets_keys, secrets_file: secrets_file
  end

  def initialize(clear:, secrets_keys:, secrets_file:)
    @clear = clear
    @secrets_keys = secrets_keys
    @secrets_file = secrets_file
  end

  def args
    [ "--env-file", secrets_file, *argumentize("--env", clear) ]
  end

  def secrets_io
    StringIO.new(Kamal::EnvFile.new(secrets).to_s)
  end

  def secrets
    @secrets ||= secrets_keys.to_h { |key| [ key, ENV.fetch(key) ] }
  end

  def secrets_directory
    File.dirname(secrets_file)
  end

  def merge(other)
    self.class.new \
      clear: @clear.merge(other.clear),
      secrets_keys: @secrets_keys | other.secrets_keys,
      secrets_file: secrets_file
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kamal-1.5.1 lib/kamal/configuration/env.rb
kamal-1.5.0 lib/kamal/configuration/env.rb