From e973fe743e503db2fca99e1e689ab1b80620738d Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 3 Jan 2024 16:02:12 +0800 Subject: [PATCH] add BuilderProvider::getBuilder() function --- src/SPC/builder/BuilderProvider.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/SPC/builder/BuilderProvider.php b/src/SPC/builder/BuilderProvider.php index 552af229..23bcf6c5 100644 --- a/src/SPC/builder/BuilderProvider.php +++ b/src/SPC/builder/BuilderProvider.php @@ -17,6 +17,8 @@ use Symfony\Component\Console\Input\InputInterface; */ class BuilderProvider { + private static ?BuilderBase $builder = null; + /** * @throws FileSystemException * @throws RuntimeException @@ -24,7 +26,7 @@ class BuilderProvider */ public static function makeBuilderByInput(InputInterface $input): BuilderBase { - return match (PHP_OS_FAMILY) { + self::$builder = match (PHP_OS_FAMILY) { // 'Windows' => new WindowsBuilder( // binary_sdk_dir: $input->getOption('with-sdk-binary-dir'), // vs_ver: $input->getOption('vs-ver'), @@ -35,5 +37,17 @@ class BuilderProvider 'BSD' => new BSDBuilder($input->getOptions()), default => throw new WrongUsageException('Current OS "' . PHP_OS_FAMILY . '" is not supported yet'), }; + return self::$builder; + } + + /** + * @throws WrongUsageException + */ + public function getBuilder(): BuilderBase + { + if (self::$builder === null) { + throw new WrongUsageException('Builder has not been initialized'); + } + return self::$builder; } }