diff --git a/lib/kamal/configuration/secrets.rb b/lib/kamal/configuration/secrets.rb index c4d9406b..088e54d5 100644 --- a/lib/kamal/configuration/secrets.rb +++ b/lib/kamal/configuration/secrets.rb @@ -1,29 +1,18 @@ class Kamal::Configuration::Secrets - attr_reader :secret_file, :destination + attr_reader :secrets_file def initialize(destination: nil) - @destination = destination - @secret_file = (destination ? [ ".kamal/secrets.#{destination}", ".kamal/secrets" ] : [ ".kamal/secrets" ]) - .find { |file| File.exist?(file) } + @secrets_file = [ *(".kamal/secrets.#{destination}" if destination), ".kamal/secrets" ].find { |f| File.exist?(f) } end def [](key) - @secrets ||= load + @secrets ||= secrets_file ? Dotenv.parse(*secrets_file) : {} @secrets.fetch(key) rescue KeyError - if secret_file - raise Kamal::ConfigurationError, "Secret '#{key}' not found in #{secret_file}" + if secrets_file + raise Kamal::ConfigurationError, "Secret '#{key}' not found in #{secrets_file}" else - raise Kamal::ConfigurationError, "Secret '#{key}' not found, no secret file provided" + raise Kamal::ConfigurationError, "Secret '#{key}' not found, no secret files provided" end end - - private - def load - original_env = ENV.to_hash - ENV["KAMAL_DESTINATION"] = destination if destination - secret_file ? Dotenv.parse(*secret_file) : {} - ensure - ENV.replace(original_env) - end end