Skip to content

Commit

Permalink
add dev:extensions command custom column display
Browse files Browse the repository at this point in the history
  • Loading branch information
crazywhalecc committed Nov 6, 2023
1 parent ff74f0c commit 07f943a
Showing 1 changed file with 33 additions and 12 deletions.
45 changes: 33 additions & 12 deletions src/SPC/command/dev/AllExtCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
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;
Expand All @@ -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'
);
}

/**
Expand All @@ -32,6 +40,16 @@ public function configure(): void
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('<error>Column name [' . $column . '] is not valid.</error>');
$this->output->writeln('<error>Available column name: lib-depends, lib-suggests, ext-depends, ext-suggests, unix-only, type</error>');
return static::FAILURE;
}
}
array_unshift($columns, 'name');

$style = new SymfonyStyle($this->input, $this->output);
$style->writeln($extensions ? 'Available extensions:' : 'Extensions:');
Expand All @@ -51,23 +69,26 @@ public function handle(): int
$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;
Expand Down

0 comments on commit 07f943a

Please sign in to comment.