diff --git a/src/SPC/command/dev/AllExtCommand.php b/src/SPC/command/dev/AllExtCommand.php
index 196de39f..399156c2 100644
--- a/src/SPC/command/dev/AllExtCommand.php
+++ b/src/SPC/command/dev/AllExtCommand.php
@@ -12,6 +12,7 @@ use SPC\store\Config;
use SPC\util\DependencyUtil;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Style\SymfonyStyle;
use function Laravel\Prompts\table;
@@ -22,6 +23,13 @@ class AllExtCommand extends BaseCommand
public function configure(): void
{
$this->addArgument('extensions', InputArgument::OPTIONAL, 'List of extensions that will be displayed, comma separated');
+ $this->addOption(
+ 'columns',
+ null,
+ InputOption::VALUE_REQUIRED,
+ 'List of columns that will be displayed, comma separated (lib-depends, lib-suggests, ext-depends, ext-suggests, unix-only)',
+ 'lib-depends,lib-suggests,ext-depends,ext-suggests,unix-only'
+ );
}
/**
@@ -32,6 +40,16 @@ class AllExtCommand extends BaseCommand
public function handle(): int
{
$extensions = array_map('trim', array_filter(explode(',', $this->getArgument('extensions') ?? '')));
+ $columns = array_map('trim', array_filter(explode(',', $this->getOption('columns'))));
+
+ foreach ($columns as $column) {
+ if (!in_array($column, ['lib-depends', 'lib-suggests', 'ext-depends', 'ext-suggests', 'unix-only', 'type'])) {
+ $this->output->writeln('Column name [' . $column . '] is not valid.');
+ $this->output->writeln('Available column name: lib-depends, lib-suggests, ext-depends, ext-suggests, unix-only, type');
+ return static::FAILURE;
+ }
+ }
+ array_unshift($columns, 'name');
$style = new SymfonyStyle($this->input, $this->output);
$style->writeln($extensions ? 'Available extensions:' : 'Extensions:');
@@ -51,23 +69,26 @@ class AllExtCommand extends BaseCommand
$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',
- ];
+ $row = [];
+ foreach ($columns as $column) {
+ $row[] = match ($column) {
+ 'name' => $extension,
+ 'type' => Config::getExt($extension, 'type'),
+ 'lib-depends' => implode(', ', $libraries),
+ 'lib-suggests' => implode(', ', $lib_suggests),
+ 'ext-depends' => implode(',', $not_included),
+ 'ext-suggests' => implode(', ', $ext_suggests),
+ 'unix-only' => Config::getExt($extension, 'unix-only', false) ? 'true' : 'false',
+ default => '',
+ };
+ }
+ $data[] = $row;
}
if ($data === []) {
$style->warning('Unknown extension selected: ' . implode(',', $extensions));
} else {
- table(
- ['Extension', 'lib-depends', 'lib-suggests', 'ext-depends', 'ext-suggests', 'unix-only'],
- $data
- );
+ table($columns, $data);
}
return static::SUCCESS;