add builder provider

This commit is contained in:
crazywhalecc 2023-03-18 17:34:37 +08:00
parent db75b18da4
commit 65d38d5efc
No known key found for this signature in database
GPG Key ID: 1F4BDD59391F2680

View File

@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
namespace SPC\builder;
use SPC\builder\linux\LinuxBuilder;
use SPC\builder\macos\MacOSBuilder;
use SPC\builder\windows\WindowsBuilder;
use SPC\exception\RuntimeException;
use Symfony\Component\Console\Input\InputInterface;
/**
* 用于生成对应系统环境的 Builder 对象的类
*/
class BuilderProvider
{
/**
* @throws RuntimeException
*/
public static function makeBuilderByInput(InputInterface $input): BuilderBase
{
return match (PHP_OS_FAMILY) {
// 'Windows' => new WindowsBuilder(
// binary_sdk_dir: $input->getOption('with-sdk-binary-dir'),
// vs_ver: $input->getOption('vs-ver'),
// arch: $input->getOption('arch'),
// ),
'Darwin' => new MacOSBuilder(
cc: $input->getOption('cc'),
cxx: $input->getOption('cxx'),
arch: $input->getOption('arch'),
),
// 'Linux' => new LinuxBuilder(
// cc: $input->getOption('cc'),
// cxx: $input->getOption('cxx'),
// arch: $input->getOption('arch'),
// ),
default => throw new RuntimeException('Current OS is not supported yet'),
};
}
}