From 7298e2441b25e914c507a3d176518898818f7a11 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Tue, 8 Aug 2023 19:22:22 +0800 Subject: [PATCH] remove list-ext command, use all-ext and alias to support its function --- src/SPC/ConsoleApplication.php | 13 +++++++--- src/SPC/command/ListExtCommand.php | 26 ------------------- src/SPC/command/dev/AllExtCommand.php | 5 ++-- .../command/{ => dev}/SortConfigCommand.php | 22 +++++++++++----- 4 files changed, 28 insertions(+), 38 deletions(-) delete mode 100644 src/SPC/command/ListExtCommand.php rename src/SPC/command/{ => dev}/SortConfigCommand.php (59%) diff --git a/src/SPC/ConsoleApplication.php b/src/SPC/ConsoleApplication.php index 598bdd10..c9f1814e 100644 --- a/src/SPC/ConsoleApplication.php +++ b/src/SPC/ConsoleApplication.php @@ -4,7 +4,6 @@ declare(strict_types=1); namespace SPC; -use SPC\command\DeployCommand; use SPC\store\FileSystem; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\HelpCommand; @@ -32,13 +31,19 @@ class ConsoleApplication extends Application // 通过扫描目录 src/static-php-cli/command/ 添加子命令 $commands = FileSystem::getClassesPsr4(ROOT_DIR . '/src/SPC/command', 'SPC\\command'); - $this->addCommands(array_map(function ($x) { return new $x(); }, array_filter($commands, function ($y) { - if (is_a($y, DeployCommand::class, true) && (class_exists('\\Phar') && \Phar::running() || !class_exists('\\Phar'))) { + $phar = class_exists('\\Phar') && \Phar::running() || !class_exists('\\Phar'); + $commands = array_filter($commands, function ($y) use ($phar) { + $archive_blacklist = [ + 'SPC\command\dev\SortConfigCommand', + 'SPC\command\DeployCommand', + ]; + if ($phar && in_array($y, $archive_blacklist)) { return false; } $reflection = new \ReflectionClass($y); return !$reflection->isAbstract() && !$reflection->isInterface(); - }))); + }); + $this->addCommands(array_map(function ($x) { return new $x(); }, $commands)); } /** diff --git a/src/SPC/command/ListExtCommand.php b/src/SPC/command/ListExtCommand.php deleted file mode 100644 index d8547f07..00000000 --- a/src/SPC/command/ListExtCommand.php +++ /dev/null @@ -1,26 +0,0 @@ - $meta) { - echo $ext . PHP_EOL; - } - return static::SUCCESS; - } -} diff --git a/src/SPC/command/dev/AllExtCommand.php b/src/SPC/command/dev/AllExtCommand.php index e04a984d..c8a18495 100644 --- a/src/SPC/command/dev/AllExtCommand.php +++ b/src/SPC/command/dev/AllExtCommand.php @@ -8,16 +8,17 @@ use SPC\command\BaseCommand; use SPC\store\Config; use Symfony\Component\Console\Attribute\AsCommand; -#[AsCommand('dev:ext-all', 'Dev command')] +#[AsCommand('dev:ext-all', 'Dev command', ['list-ext'])] class AllExtCommand extends BaseCommand { public function configure() { + $this->addOption('line', 'l', null, 'Show with separate lines'); } public function handle(): int { - $this->output->writeln(implode(',', array_keys(Config::getExts()))); + $this->output->writeln(implode($this->input->getOption('line') ? PHP_EOL : ',', array_keys(Config::getExts()))); return static::SUCCESS; } } diff --git a/src/SPC/command/SortConfigCommand.php b/src/SPC/command/dev/SortConfigCommand.php similarity index 59% rename from src/SPC/command/SortConfigCommand.php rename to src/SPC/command/dev/SortConfigCommand.php index 579b2a89..39e32f31 100644 --- a/src/SPC/command/SortConfigCommand.php +++ b/src/SPC/command/dev/SortConfigCommand.php @@ -2,8 +2,9 @@ declare(strict_types=1); -namespace SPC\command; +namespace SPC\command\dev; +use SPC\command\BaseCommand; use SPC\exception\FileSystemException; use SPC\exception\ValidationException; use SPC\store\FileSystem; @@ -12,9 +13,9 @@ use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; /** - * 修改 config 后对其 kv 进行排序的操作 + * Modify config file: sort lib, ext, source by name. */ -#[AsCommand('sort-config', 'After config edited, sort it by alphabet')] +#[AsCommand('dev:sort-config', 'After config edited, sort it by alphabet', ['sort-config'])] class SortConfigCommand extends BaseCommand { public function configure() @@ -33,19 +34,28 @@ class SortConfigCommand extends BaseCommand $file = json_decode(FileSystem::readFile(ROOT_DIR . '/config/lib.json'), true); ConfigValidator::validateLibs($file); ksort($file); - file_put_contents(ROOT_DIR . '/config/lib.json', json_encode($file, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); + if (!file_put_contents(ROOT_DIR . '/config/lib.json', json_encode($file, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE))) { + $this->output->writeln('Write file lib.json failed!'); + return static::FAILURE; + } break; case 'source': $file = json_decode(FileSystem::readFile(ROOT_DIR . '/config/source.json'), true); ConfigValidator::validateSource($file); uksort($file, fn ($a, $b) => $a === 'php-src' ? -1 : ($b === 'php-src' ? 1 : ($a < $b ? -1 : 1))); - file_put_contents(ROOT_DIR . '/config/source.json', json_encode($file, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); + if (!file_put_contents(ROOT_DIR . '/config/source.json', json_encode($file, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE))) { + $this->output->writeln('Write file source.json failed!'); + return static::FAILURE; + } break; case 'ext': $file = json_decode(FileSystem::readFile(ROOT_DIR . '/config/ext.json'), true); ConfigValidator::validateExts($file); ksort($file); - file_put_contents(ROOT_DIR . '/config/ext.json', json_encode($file, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); + if (!file_put_contents(ROOT_DIR . '/config/ext.json', json_encode($file, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE))) { + $this->output->writeln('Write file ext.json failed!'); + return static::FAILURE; + } break; default: $this->output->writeln("invalid config name: {$name}");