diff --git a/app/Actions/Forge/UpdateForgeEnvironmentVariables.php b/app/Actions/Forge/UpdateForgeEnvironmentVariables.php new file mode 100644 index 0000000..165cdc7 --- /dev/null +++ b/app/Actions/Forge/UpdateForgeEnvironmentVariables.php @@ -0,0 +1,48 @@ +setting->envKeys), + $service->database + ); + + if ($service->setting->sslRequired) { + $newKeys = array_merge($newKeys, ['APP_URL' => $service->getSiteLink()]); + } + + if (empty($newKeys)) { + return false; + } + + $source = $service->forge->siteEnvironmentFile($service->server->id, $service->site->id); + $mergedEnvs = MergeEnvironmentVariables::run($source, $newKeys); + + $service->forge->updateSiteEnvironmentFile( + $service->server->id, + $service->site->id, + $mergedEnvs + ); + + return true; + } +} diff --git a/app/Services/Forge/Pipeline/UpdateEnvironmentVariables.php b/app/Services/Forge/Pipeline/UpdateEnvironmentVariables.php index d40704a..e143fa2 100644 --- a/app/Services/Forge/Pipeline/UpdateEnvironmentVariables.php +++ b/app/Services/Forge/Pipeline/UpdateEnvironmentVariables.php @@ -13,8 +13,7 @@ namespace App\Services\Forge\Pipeline; -use App\Actions\MergeEnvironmentVariables; -use App\Actions\TextToArray; +use App\Actions\Forge\UpdateForgeEnvironmentVariables; use App\Services\Forge\ForgeService; use App\Traits\Outputifier; use Closure; @@ -25,25 +24,12 @@ class UpdateEnvironmentVariables public function __invoke(ForgeService $service, Closure $next) { - $newKeys = array_merge(TextToArray::run($service->setting->envKeys), $service->database); + $updated = resolve(UpdateForgeEnvironmentVariables::class)->handle($service); - if (! empty($newKeys)) { - $this->information('Processing update of environment variables.'); - - $service->forge->updateSiteEnvironmentFile( - $service->server->id, - $service->site->id, - $this->getBothEnvsMerged($service, $newKeys) - ); + if ($updated) { + $this->information('Environment variables have been updated successfully.'); } return $next($service); } - - protected function getBothEnvsMerged(ForgeService $service, array $newKeys): string - { - $source = $service->forge->siteEnvironmentFile($service->server->id, $service->site->id); - - return MergeEnvironmentVariables::run($source, $newKeys); - } } diff --git a/tests/Unit/Services/Forge/Actions/RecreateDatabaseTest.php b/tests/Unit/Actions/RecreateDatabaseTest.php similarity index 100% rename from tests/Unit/Services/Forge/Actions/RecreateDatabaseTest.php rename to tests/Unit/Actions/RecreateDatabaseTest.php