From d1128c7a1e1f9ca6b399d532f150dbb691b36d3c Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Sun, 9 Jun 2024 22:37:23 +0200 Subject: [PATCH] fix: multiline variable should be literal + should be multiline in bash with \ --- app/Jobs/ApplicationDeploymentJob.php | 23 ++++++++++++++++--- .../environment-variable/show.blade.php | 8 ++++--- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app/Jobs/ApplicationDeploymentJob.php b/app/Jobs/ApplicationDeploymentJob.php index 6517aae0a..35d6aad0a 100644 --- a/app/Jobs/ApplicationDeploymentJob.php +++ b/app/Jobs/ApplicationDeploymentJob.php @@ -763,7 +763,7 @@ class ApplicationDeploymentJob implements ShouldQueue, ShouldBeEncrypted if ($env->version === '4.0.0-beta.239') { $real_value = $env->real_value; } else { - if ($env->is_literal) { + if ($env->is_literal || $env->is_multiline) { $real_value = '\'' . $real_value . '\''; } else { $real_value = escapeEnvVariables($env->real_value); @@ -804,10 +804,11 @@ class ApplicationDeploymentJob implements ShouldQueue, ShouldBeEncrypted if ($env->version === '4.0.0-beta.239') { $real_value = $env->real_value; } else { - if ($env->is_literal) { + if ($env->is_literal || $env->is_multiline) { $real_value = '\'' . $real_value . '\''; } else { $real_value = escapeEnvVariables($env->real_value); + ray($real_value); } } $envs->push($env->key . '=' . $real_value); @@ -1948,11 +1949,17 @@ COPY ./nginx.conf /etc/nginx/conf.d/default.conf"); if ($this->pull_request_id === 0) { foreach ($this->application->build_environment_variables as $env) { $value = escapeshellarg($env->real_value); + if (str($value)->contains("\n") && data_get($env, 'is_multiline') === true) { + $value = str_replace("\n", "\\\n", $value); + } $this->build_args->push("--build-arg {$env->key}={$value}"); } } else { foreach ($this->application->build_environment_variables_preview as $env) { $value = escapeshellarg($env->real_value); + if (str($value)->contains("\n") && data_get($env, 'is_multiline') === true) { + $value = str_replace("\n", "\\\n", $value); + } $this->build_args->push("--build-arg {$env->key}={$value}"); } } @@ -1968,10 +1975,20 @@ COPY ./nginx.conf /etc/nginx/conf.d/default.conf"); $dockerfile = collect(Str::of($this->saved_outputs->get('dockerfile'))->trim()->explode("\n")); if ($this->pull_request_id === 0) { foreach ($this->application->build_environment_variables as $env) { - $dockerfile->splice(1, 0, "ARG {$env->key}={$env->real_value}"); + if (str($env->real_value)->contains("\n") && data_get($env, 'is_multiline') === true) { + $value = str_replace("\n", "\\\n", $env->real_value); + } else { + $value = $env->real_value; + } + $dockerfile->splice(1, 0, "ARG {$env->key}={$value}"); } } else { foreach ($this->application->build_environment_variables_preview as $env) { + if (str($env->real_value)->contains("\n") && data_get($env, 'is_multiline') === true) { + $value = str_replace("\n", "\\\n", $env->real_value); + } else { + $value = $env->real_value; + } $dockerfile->splice(1, 0, "ARG {$env->key}={$env->real_value}"); } } diff --git a/resources/views/livewire/project/shared/environment-variable/show.blade.php b/resources/views/livewire/project/shared/environment-variable/show.blade.php index e07766fcb..b23148547 100644 --- a/resources/views/livewire/project/shared/environment-variable/show.blade.php +++ b/resources/views/livewire/project/shared/environment-variable/show.blade.php @@ -63,9 +63,11 @@ @else - + @if (!data_get($env, 'is_multiline')) + + @endif @endif @endif @endif