From c551efb75c25cf24e52100033eccb2a9c2092568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Gr=C3=BCner?= Date: Mon, 26 May 2025 14:14:23 +0200 Subject: [PATCH] Fix CraftCommand ignoring build-options during build (closes #732) (#733) Unified option to parameter conversion --- src/SPC/command/CraftCommand.php | 39 ++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/SPC/command/CraftCommand.php b/src/SPC/command/CraftCommand.php index 7cfc15c1..9fa2f385 100644 --- a/src/SPC/command/CraftCommand.php +++ b/src/SPC/command/CraftCommand.php @@ -79,20 +79,7 @@ class CraftCommand extends BaseCommand $craft['download-options']['ignore-cache-sources'] .= ',php-src'; } } - $download_options = $craft['download-options']; - foreach ($download_options as $option => $val) { - if (is_bool($val) && $val || is_null($val)) { - $args[] = "--{$option}"; - } elseif (is_string($val)) { - $args[] = "--{$option}={$val}"; - } elseif (is_array($val)) { - foreach ($val as $v) { - if (is_string($v)) { - $args[] = "--{$option}={$v}"; - } - } - } - } + $this->optionsToArguments($craft['download-options'], $args); $retcode = $this->runCommand('download', ...$args); if ($retcode !== 0) { $this->output->writeln('craft download failed'); @@ -104,6 +91,7 @@ class CraftCommand extends BaseCommand // craft build if ($craft['craft-options']['build']) { $args = [$extensions, "--with-libs={$libs}", ...array_map(fn ($x) => "--build-{$x}", $craft['sapi'])]; + $this->optionsToArguments($craft['build-options'], $args); $retcode = $this->runCommand('build', ...$args); if ($retcode !== 0) { $this->output->writeln('craft build failed'); @@ -164,4 +152,27 @@ class CraftCommand extends BaseCommand $process->run([$this, 'processLogCallback']); return $process->getExitCode(); } + + private function optionsToArguments(array $options, array &$args): void + { + foreach ($options as $option => $val) { + if ((is_bool($val) && $val) || $val === null) { + $args[] = "--{$option}"; + + continue; + } + if (is_string($val)) { + $args[] = "--{$option}={$val}"; + + continue; + } + if (is_array($val)) { + foreach ($val as $v) { + if (is_string($v)) { + $args[] = "--{$option}={$v}"; + } + } + } + } + } }