diff --git a/src/SPC/command/BuildPHPCommand.php b/src/SPC/command/BuildPHPCommand.php index de6a2b52f..66aab328d 100644 --- a/src/SPC/command/BuildPHPCommand.php +++ b/src/SPC/command/BuildPHPCommand.php @@ -79,12 +79,12 @@ public function handle(): int if ($rule === BUILD_TARGET_NONE) { $this->output->writeln('Please add at least one build SAPI!'); - $this->output->writeln("\t--build-cli\tBuild php-cli SAPI"); - $this->output->writeln("\t--build-micro\tBuild phpmicro SAPI"); - $this->output->writeln("\t--build-fpm\tBuild php-fpm SAPI"); - $this->output->writeln("\t--build-embed\tBuild embed SAPI/libphp"); + $this->output->writeln("\t--build-cli\t\tBuild php-cli SAPI"); + $this->output->writeln("\t--build-micro\t\tBuild phpmicro SAPI"); + $this->output->writeln("\t--build-fpm\t\tBuild php-fpm SAPI"); + $this->output->writeln("\t--build-embed\t\tBuild embed SAPI/libphp"); $this->output->writeln("\t--build-frankenphp\tBuild FrankenPHP SAPI/libphp"); - $this->output->writeln("\t--build-all\tBuild all SAPI: cli, micro, fpm, embed, frankenphp"); + $this->output->writeln("\t--build-all\t\tBuild all SAPI: cli, micro, fpm, embed, frankenphp"); return static::FAILURE; } if ($rule === BUILD_TARGET_ALL) { @@ -295,13 +295,14 @@ private function parseRules(array $shared_extensions = []): int $rule |= ($this->getOption('build-micro') ? BUILD_TARGET_MICRO : BUILD_TARGET_NONE); $rule |= ($this->getOption('build-fpm') ? BUILD_TARGET_FPM : BUILD_TARGET_NONE); $embed = $this->getOption('build-embed'); - if (!$embed && !empty($shared_extensions)) { - $embed = true; - } + $embed = match ($embed) { + null => getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') ?: 'static', + 'static' => 'static', + 'shared' => 'shared', + false => false, + default => throw new WrongUsageException('Invalid --build-embed option, please use --build-embed[=static|shared]'), + }; if ($embed) { - if ($embed === true) { - $embed = getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') ?: 'static'; - } $rule |= BUILD_TARGET_EMBED; f_putenv('SPC_CMD_VAR_PHP_EMBED_TYPE=' . ($embed === 'static' ? 'static' : 'shared')); }