Skip to content

Commit 8fe2f92

Browse files
authored
Merge pull request #1466 from basecamp/env-secrets-tidy
Tidy up the env secrets handling
2 parents 3aef930 + fb95b38 commit 8fe2f92

File tree

2 files changed

+9
-18
lines changed

2 files changed

+9
-18
lines changed

lib/kamal/configuration/env.rb

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
class Kamal::Configuration::Env
22
include Kamal::Configuration::Validation
33

4-
attr_reader :context
5-
attr_reader :clear, :secret_keys
4+
attr_reader :context, :clear, :secret_keys
65
delegate :argumentize, to: Kamal::Utils
76

87
def initialize(config:, secrets:, context: "env")
@@ -11,19 +10,14 @@ def initialize(config:, secrets:, context: "env")
1110
@secret_keys = config.fetch("secret", [])
1211
@context = context
1312
validate! config, context: context, with: Kamal::Configuration::Validator::Env
14-
@secret_map = build_secret_map(@secret_keys)
1513
end
1614

1715
def clear_args
1816
argumentize("--env", clear)
1917
end
2018

21-
def secrets
22-
@resolved_secrets ||= resolve_secrets
23-
end
24-
2519
def secrets_io
26-
Kamal::EnvFile.new(secrets).to_io
20+
Kamal::EnvFile.new(aliased_secrets).to_io
2721
end
2822

2923
def merge(other)
@@ -33,15 +27,12 @@ def merge(other)
3327
end
3428

3529
private
36-
def build_secret_map(secret_keys)
37-
Array(secret_keys).to_h do |key|
38-
key_name, key_aliased_to = key.split(":", 2)
39-
key_aliased_to ||= key_name
40-
[ key_name, key_aliased_to ]
41-
end
30+
def aliased_secrets
31+
secret_keys.to_h { |key| extract_alias(key) }.transform_values { |secret_key| @secrets[secret_key] }
4232
end
4333

44-
def resolve_secrets
45-
@secret_map.transform_values { |secret_key| @secrets[secret_key] }
34+
def extract_alias(key)
35+
key_name, key_aliased_to = key.split(":", 2)
36+
[ key_name, key_aliased_to || key_name ]
4637
end
4738
end

test/configuration/env/tags_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class ConfigurationEnvTagsTest < ActiveSupport::TestCase
9292
}
9393

9494
config = Kamal::Configuration.new(deploy)
95-
assert_equal "hello", config.role("web").env("1.1.1.1").secrets["PASSWORD"]
95+
assert_equal "PASSWORD=hello\n", config.role("web").env("1.1.1.1").secrets_io.string
9696
end
9797
end
9898

@@ -110,7 +110,7 @@ class ConfigurationEnvTagsTest < ActiveSupport::TestCase
110110
}
111111

112112
config = Kamal::Configuration.new(deploy)
113-
assert_equal "aliased_hello", config.role("web").env("1.1.1.1").secrets["PASSWORD"]
113+
assert_equal "PASSWORD=aliased_hello\n", config.role("web").env("1.1.1.1").secrets_io.string
114114
end
115115
end
116116

0 commit comments

Comments
 (0)