Handle parentheses in variables in commands

This commit is contained in:
Ivan Yurchanka
2025-01-08 17:13:10 +01:00
parent 1547089da0
commit 7627f74e45

View File

@@ -4,7 +4,7 @@ class Kamal::Secrets::Dotenv::InlineCommandSubstitution
::Dotenv::Parser.substitutions.map! { |sub| sub == ::Dotenv::Substitutions::Command ? self : sub }
end
def call(value, _env, overwrite: false)
def call(value, env, overwrite: false)
# Process interpolated shell commands
value.gsub(Dotenv::Substitutions::Command.singleton_class::INTERPOLATED_SHELL_COMMAND) do |*|
# Eliminate opening and closing parentheses
@@ -14,6 +14,7 @@ class Kamal::Secrets::Dotenv::InlineCommandSubstitution
# Command is escaped, don't replace it.
$LAST_MATCH_INFO[0][1..]
else
command = ::Dotenv::Substitutions::Variable.call(command, env)
if command =~ /\A\s*kamal\s*secrets\s+/
# Inline the command
inline_secrets_command(command)