mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 12:54:52 +08:00
add dev:extensions command custom column display
This commit is contained in:
parent
ff74f0cdaf
commit
07f943af7e
@ -12,6 +12,7 @@ use SPC\store\Config;
|
|||||||
use SPC\util\DependencyUtil;
|
use SPC\util\DependencyUtil;
|
||||||
use Symfony\Component\Console\Attribute\AsCommand;
|
use Symfony\Component\Console\Attribute\AsCommand;
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
use Symfony\Component\Console\Style\SymfonyStyle;
|
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||||
|
|
||||||
use function Laravel\Prompts\table;
|
use function Laravel\Prompts\table;
|
||||||
@ -22,6 +23,13 @@ class AllExtCommand extends BaseCommand
|
|||||||
public function configure(): void
|
public function configure(): void
|
||||||
{
|
{
|
||||||
$this->addArgument('extensions', InputArgument::OPTIONAL, 'List of extensions that will be displayed, comma separated');
|
$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
|
public function handle(): int
|
||||||
{
|
{
|
||||||
$extensions = array_map('trim', array_filter(explode(',', $this->getArgument('extensions') ?? '')));
|
$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 = new SymfonyStyle($this->input, $this->output);
|
||||||
$style->writeln($extensions ? 'Available extensions:' : 'Extensions:');
|
$style->writeln($extensions ? 'Available extensions:' : 'Extensions:');
|
||||||
@ -51,23 +69,26 @@ class AllExtCommand extends BaseCommand
|
|||||||
$lib_suggests = Config::getExt($extension, 'lib-suggests', []);
|
$lib_suggests = Config::getExt($extension, 'lib-suggests', []);
|
||||||
$ext_suggests = Config::getExt($extension, 'ext-suggests', []);
|
$ext_suggests = Config::getExt($extension, 'ext-suggests', []);
|
||||||
|
|
||||||
$data[] = [
|
$row = [];
|
||||||
$extension,
|
foreach ($columns as $column) {
|
||||||
implode(', ', $libraries),
|
$row[] = match ($column) {
|
||||||
implode(', ', $lib_suggests),
|
'name' => $extension,
|
||||||
implode(',', $not_included),
|
'type' => Config::getExt($extension, 'type'),
|
||||||
implode(', ', $ext_suggests),
|
'lib-depends' => implode(', ', $libraries),
|
||||||
Config::getExt($extension, 'unix-only', false) ? 'true' : 'false',
|
'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 === []) {
|
if ($data === []) {
|
||||||
$style->warning('Unknown extension selected: ' . implode(',', $extensions));
|
$style->warning('Unknown extension selected: ' . implode(',', $extensions));
|
||||||
} else {
|
} else {
|
||||||
table(
|
table($columns, $data);
|
||||||
['Extension', 'lib-depends', 'lib-suggests', 'ext-depends', 'ext-suggests', 'unix-only'],
|
|
||||||
$data
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return static::SUCCESS;
|
return static::SUCCESS;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user