Compare commits

...

4 Commits

Author SHA1 Message Date
Jerry Ma
be8eb90b86 cs fix (#166) 2023-09-08 22:12:59 +08:00
Jerry Ma
54e98666e7 Update ConsoleApplication.php 2023-09-08 22:03:40 +08:00
Joseph Bielawski
e8b277ad0d Prevent unknown extension call 2023-09-07 19:05:00 +08:00
Joseph Bielawski
3bd037f48f Rework style of dev command showing extensions details 2023-09-07 19:05:00 +08:00
14 changed files with 57 additions and 86 deletions

View File

@@ -14,7 +14,7 @@ use Symfony\Component\Console\Command\ListCommand;
*/
class ConsoleApplication extends Application
{
public const VERSION = '2.0.0';
public const VERSION = '2.0-rc6';
/**
* @throws \ReflectionException

View File

@@ -4,6 +4,4 @@ declare(strict_types=1);
namespace SPC\builder\traits;
trait LibraryTrait
{
}
trait LibraryTrait {}

View File

@@ -6,15 +6,19 @@ namespace SPC\command\dev;
use SPC\command\BaseCommand;
use SPC\exception\FileSystemException;
use SPC\exception\WrongUsageException;
use SPC\store\Config;
use SPC\util\DependencyUtil;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Style\SymfonyStyle;
#[AsCommand('dev:ext-all', 'Dev command', ['list-ext'])]
#[AsCommand('dev:extensions', 'Helper command that lists available extension details', ['list-ext'])]
class AllExtCommand extends BaseCommand
{
public function configure(): void
{
$this->addOption('line', 'l', null, 'Show with separate lines');
$this->addArgument('extensions', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Extension name', null);
}
/**
@@ -22,7 +26,45 @@ class AllExtCommand extends BaseCommand
*/
public function handle(): int
{
$this->output->writeln(implode($this->input->getOption('line') ? PHP_EOL : ',', array_keys(Config::getExts())));
$extensions = $this->input->getArgument('extensions') ?: [];
$style = new SymfonyStyle($this->input, $this->output);
$style->writeln($extensions ? 'Available extensions:' : 'Extensions:');
$data = [];
foreach (Config::getExts() as $extension => $details) {
if ($extensions !== [] && !\in_array($extension, $extensions, true)) {
continue;
}
try {
[, $libraries, $not_included] = DependencyUtil::getExtLibsByDeps([$extension]);
} catch (WrongUsageException) {
$libraries = $not_included = [];
}
$lib_suggests = Config::getExt($extension, 'lib-suggests', []);
$ext_suggests = Config::getExt($extension, 'ext-suggests', []);
$data[] = [
$extension,
implode(', ', $libraries),
implode(', ', $lib_suggests),
implode(',', $not_included),
implode(', ', $ext_suggests),
Config::getExt($extension, 'unix-only', false) ? 'true' : 'false',
];
}
if ($data === []) {
$style->warning('Unknown extension selected: ' . implode(',', $extensions));
} else {
$style->table(
['Extension', 'lib-depends', 'lib-suggests', 'ext-depends', 'ext-suggests', 'unix-only'],
$data
);
}
return static::SUCCESS;
}
}

View File

@@ -1,50 +0,0 @@
<?php
declare(strict_types=1);
namespace SPC\command\dev;
use SPC\command\BaseCommand;
use SPC\exception\FileSystemException;
use SPC\exception\RuntimeException;
use SPC\exception\WrongUsageException;
use SPC\store\Config;
use SPC\util\DependencyUtil;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputArgument;
#[AsCommand('dev:ext-info', 'Dev command')]
class ExtInfoCommand extends BaseCommand
{
public function configure(): void
{
$this->addArgument('extensions', InputArgument::REQUIRED, 'The extension name you need to get info');
}
/**
* @throws WrongUsageException
* @throws FileSystemException
* @throws RuntimeException
*/
public function handle(): int
{
$extensions = array_map('trim', array_filter(explode(',', $this->getArgument('extensions'))));
// 根据提供的扩展列表获取依赖库列表并编译
foreach ($extensions as $extension) {
$this->output->writeln('<comment>[ ' . $extension . ' ]</comment>');
[, $libraries, $not_included] = DependencyUtil::getExtLibsByDeps([$extension]);
$lib_suggests = Config::getExt($extension, 'lib-suggests', []);
$ext_suggests = Config::getExt($extension, 'ext-suggests', []);
$this->output->writeln("<info>lib-depends:\t" . implode(', ', $libraries) . '</info>');
$this->output->writeln("<info>lib-suggests:\t" . implode(', ', $lib_suggests) . '</info>');
$this->output->writeln("<info>ext-depends:\t" . implode(',', $not_included) . '</info>');
$this->output->writeln("<info>ext-suggests:\t" . implode(', ', $ext_suggests) . '</info>');
if (Config::getExt($extension, 'unix-only', false)) {
$this->output->writeln("<info>Unix only:\ttrue</info>");
}
$this->output->writeln('');
}
return static::SUCCESS;
}
}

View File

@@ -14,6 +14,5 @@ class AsCheckItem
public ?string $limit_os = null,
public int $level = 100,
public bool $manual = false,
) {
}
) {}
}

View File

@@ -7,7 +7,5 @@ namespace SPC\doctor;
#[\Attribute(\Attribute::TARGET_METHOD | \Attribute::IS_REPEATABLE)]
class AsFixItem
{
public function __construct(public string $name)
{
}
public function __construct(public string $name) {}
}

View File

@@ -6,9 +6,7 @@ namespace SPC\doctor;
class CheckResult
{
public function __construct(private readonly bool $ok, private readonly ?string $message = null, private string $fix_item = '', private array $fix_params = [])
{
}
public function __construct(private readonly bool $ok, private readonly ?string $message = null, private string $fix_item = '', private array $fix_params = []) {}
public static function fail(string $message, string $fix_item = '', array $fix_params = []): CheckResult
{

View File

@@ -4,6 +4,4 @@ declare(strict_types=1);
namespace SPC\exception;
class DownloaderException extends \Exception
{
}
class DownloaderException extends \Exception {}

View File

@@ -4,6 +4,4 @@ declare(strict_types=1);
namespace SPC\exception;
class FileSystemException extends \Exception
{
}
class FileSystemException extends \Exception {}

View File

@@ -4,6 +4,4 @@ declare(strict_types=1);
namespace SPC\exception;
class InvalidArgumentException extends \Exception
{
}
class InvalidArgumentException extends \Exception {}

View File

@@ -4,6 +4,4 @@ declare(strict_types=1);
namespace SPC\exception;
class RuntimeException extends \Exception
{
}
class RuntimeException extends \Exception {}

View File

@@ -4,6 +4,4 @@ declare(strict_types=1);
namespace SPC\exception;
class ValidationException extends \Exception
{
}
class ValidationException extends \Exception {}

View File

@@ -4,6 +4,4 @@ declare(strict_types=1);
namespace SPC\exception;
class WrongUsageException extends \Exception
{
}
class WrongUsageException extends \Exception {}

View File

@@ -13,9 +13,7 @@ class CustomExt
{
private static array $custom_ext_class = [];
public function __construct(protected string $ext_name)
{
}
public function __construct(protected string $ext_name) {}
/**
* Load all custom extension classes