mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 21:04:52 +08:00
add BuilderProvider::getBuilder() function
This commit is contained in:
parent
149e844d59
commit
e973fe743e
@ -17,6 +17,8 @@ use Symfony\Component\Console\Input\InputInterface;
|
|||||||
*/
|
*/
|
||||||
class BuilderProvider
|
class BuilderProvider
|
||||||
{
|
{
|
||||||
|
private static ?BuilderBase $builder = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws FileSystemException
|
* @throws FileSystemException
|
||||||
* @throws RuntimeException
|
* @throws RuntimeException
|
||||||
@ -24,7 +26,7 @@ class BuilderProvider
|
|||||||
*/
|
*/
|
||||||
public static function makeBuilderByInput(InputInterface $input): BuilderBase
|
public static function makeBuilderByInput(InputInterface $input): BuilderBase
|
||||||
{
|
{
|
||||||
return match (PHP_OS_FAMILY) {
|
self::$builder = match (PHP_OS_FAMILY) {
|
||||||
// 'Windows' => new WindowsBuilder(
|
// 'Windows' => new WindowsBuilder(
|
||||||
// binary_sdk_dir: $input->getOption('with-sdk-binary-dir'),
|
// binary_sdk_dir: $input->getOption('with-sdk-binary-dir'),
|
||||||
// vs_ver: $input->getOption('vs-ver'),
|
// vs_ver: $input->getOption('vs-ver'),
|
||||||
@ -35,5 +37,17 @@ class BuilderProvider
|
|||||||
'BSD' => new BSDBuilder($input->getOptions()),
|
'BSD' => new BSDBuilder($input->getOptions()),
|
||||||
default => throw new WrongUsageException('Current OS "' . PHP_OS_FAMILY . '" is not supported yet'),
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user