Class: Kamal::Configuration::Env

Inherits:
Object
  • Object
show all
Includes:
Validation
Defined in:
lib/kamal/configuration/env.rb

Defined Under Namespace

Classes: Tag

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Validation

#validate!, #validation_yml

Constructor Details

#initialize(config:, secrets_file: nil, context: "env") ⇒ Env

Returns a new instance of Env.



7
8
9
10
11
12
13
# File 'lib/kamal/configuration/env.rb', line 7

def initialize(config:, secrets_file: nil, context: "env")
  @clear = config.fetch("clear", config.key?("secret") || config.key?("tags") ? {} : config)
  @secrets_keys = config.fetch("secret", [])
  @secrets_file = secrets_file
  @context = context
  validate! config, context: context, with: Kamal::Configuration::Validator::Env
end

Instance Attribute Details

#clearObject (readonly)

Returns the value of attribute clear.



4
5
6
# File 'lib/kamal/configuration/env.rb', line 4

def clear
  @clear
end

#contextObject (readonly)

Returns the value of attribute context.



4
5
6
# File 'lib/kamal/configuration/env.rb', line 4

def context
  @context
end

#secrets_fileObject (readonly)

Returns the value of attribute secrets_file.



4
5
6
# File 'lib/kamal/configuration/env.rb', line 4

def secrets_file
  @secrets_file
end

#secrets_keysObject (readonly)

Returns the value of attribute secrets_keys.



4
5
6
# File 'lib/kamal/configuration/env.rb', line 4

def secrets_keys
  @secrets_keys
end

Instance Method Details

#argsObject



15
16
17
# File 'lib/kamal/configuration/env.rb', line 15

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

#merge(other) ⇒ Object



31
32
33
34
35
# File 'lib/kamal/configuration/env.rb', line 31

def merge(other)
  self.class.new \
    config: { "clear" => clear.merge(other.clear), "secret" => secrets_keys | other.secrets_keys },
    secrets_file: secrets_file || other.secrets_file
end

#secretsObject



23
24
25
# File 'lib/kamal/configuration/env.rb', line 23

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

#secrets_directoryObject



27
28
29
# File 'lib/kamal/configuration/env.rb', line 27

def secrets_directory
  File.dirname(secrets_file)
end

#secrets_ioObject



19
20
21
# File 'lib/kamal/configuration/env.rb', line 19

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