From 0cc39d185c27505bd6c1f8809bbbea3f3f6b19a2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?C=C3=B4me=20Chilliet?= Date: Mon, 27 Jun 2022 15:20:16 +0200 Subject: [PATCH] Use symfony console table to render the job list properly MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- core/Command/Background/ListCommand.php | 2 +- core/Command/Base.php | 25 +++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/core/Command/Background/ListCommand.php b/core/Command/Background/ListCommand.php index 0bbf01d76db..d29ac38a7bf 100644 --- a/core/Command/Background/ListCommand.php +++ b/core/Command/Background/ListCommand.php @@ -68,7 +68,7 @@ class ListCommand extends Base { protected function execute(InputInterface $input, OutputInterface $output): int { $jobs = $this->jobList->getJobs($input->getOption('class'), (int)$input->getOption('limit'), (int)$input->getOption('offset')); - $this->writeArrayInOutputFormat($input, $output, $this->formatJobs($jobs)); + $this->writeTableInOutputFormat($input, $output, $this->formatJobs($jobs)); return 0; } diff --git a/core/Command/Base.php b/core/Command/Base.php index d228e362447..abf9f95773a 100644 --- a/core/Command/Base.php +++ b/core/Command/Base.php @@ -26,9 +26,10 @@ namespace OC\Core\Command; use OC\Core\Command\User\ListCommand; -use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface; use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext; +use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; @@ -54,7 +55,7 @@ class Base extends Command implements CompletionAwareInterface { ; } - protected function writeArrayInOutputFormat(InputInterface $input, OutputInterface $output, array $items, string $prefix = ' - ') { + protected function writeArrayInOutputFormat(InputInterface $input, OutputInterface $output, array $items, string $prefix = ' - '): void { switch ($input->getOption('output')) { case self::OUTPUT_FORMAT_JSON: $output->writeln(json_encode($items)); @@ -84,6 +85,26 @@ class Base extends Command implements CompletionAwareInterface { } } + protected function writeTableInOutputFormat(InputInterface $input, OutputInterface $output, array $items): void { + switch ($input->getOption('output')) { + case self::OUTPUT_FORMAT_JSON: + $output->writeln(json_encode($items)); + break; + case self::OUTPUT_FORMAT_JSON_PRETTY: + $output->writeln(json_encode($items, JSON_PRETTY_PRINT)); + break; + default: + $table = new Table($output); + $table->setRows($items); + if (!empty($items) && is_string(array_key_first(reset($items)))) { + $table->setHeaders(array_keys(reset($items))); + } + $table->render(); + break; + } + } + + /** * @param mixed $item */ -- 2.39.5