Class: Kamal::Configuration::Env

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

Defined Under Namespace

Classes: Tag

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(clear:, secrets_keys:, secrets_file:) ⇒ Env

Returns a new instance of Env.



12
13
14
15
16
# File 'lib/kamal/configuration/env.rb', line 12

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

Instance Attribute Details

#clearObject (readonly)

Returns the value of attribute clear.



2
3
4
# File 'lib/kamal/configuration/env.rb', line 2

def clear
  @clear
end

#secrets_fileObject (readonly)

Returns the value of attribute secrets_file.



2
3
4
# File 'lib/kamal/configuration/env.rb', line 2

def secrets_file
  @secrets_file
end

#secrets_keysObject (readonly)

Returns the value of attribute secrets_keys.



2
3
4
# File 'lib/kamal/configuration/env.rb', line 2

def secrets_keys
  @secrets_keys
end

Class Method Details

.from_config(config:, secrets_file: nil) ⇒ Object



5
6
7
8
9
10
# File 'lib/kamal/configuration/env.rb', line 5

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

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

Instance Method Details

#argsObject



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

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

#merge(other) ⇒ Object



34
35
36
37
38
39
# File 'lib/kamal/configuration/env.rb', line 34

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

#secretsObject



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

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

#secrets_directoryObject



30
31
32
# File 'lib/kamal/configuration/env.rb', line 30

def secrets_directory
  File.dirname(secrets_file)
end

#secrets_ioObject



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

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