From 7fe0eea59d0f554493bb0e43aaf016017e29cf71 Mon Sep 17 00:00:00 2001 From: Julien Rosset Date: Fri, 6 Dec 2024 17:29:48 +0100 Subject: [PATCH] =?UTF-8?q?OutputWithLogger=20:=20add=20method=20for=20?= =?UTF-8?q?=E2=80=9Cerror=E2=80=9D=20output?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/CliProgram/CliHelper.php | 3 ++- src/CliProgram/Output/OutputWithLogger.php | 8 ++++++++ src/CliProgram/Output/OutputWrapper.php | 9 +++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/CliProgram/CliHelper.php b/src/CliProgram/CliHelper.php index b4c6643..8855a76 100644 --- a/src/CliProgram/CliHelper.php +++ b/src/CliProgram/CliHelper.php @@ -2,6 +2,7 @@ namespace jrosset\CliProgram; +use jrosset\CliProgram\Output\OutputWrapper; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Output\ConsoleOutputInterface; @@ -19,7 +20,7 @@ abstract class CliHelper { * @return OutputInterface The “error” output if exists, else the output itself */ public static final function getErrorOutput (OutputInterface $output): OutputInterface { - return $output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output; + return $output instanceof ConsoleOutputInterface || $output instanceof OutputWrapper ? $output->getErrorOutput() : $output; } /** diff --git a/src/CliProgram/Output/OutputWithLogger.php b/src/CliProgram/Output/OutputWithLogger.php index 82507b7..26cbd1a 100644 --- a/src/CliProgram/Output/OutputWithLogger.php +++ b/src/CliProgram/Output/OutputWithLogger.php @@ -3,6 +3,7 @@ namespace jrosset\CliProgram\Output; use InvalidArgumentException; +use jrosset\CliProgram\CliHelper; use Psr\Log\LoggerInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -38,6 +39,13 @@ class OutputWithLogger extends OutputWrapper { $this->setLogger($logger); } + /** + * @inheritDoc + */ + public function getErrorOutput (): self { + return new static(CliHelper::getErrorOutput($this), $this->logger); + } + /** * The logger * diff --git a/src/CliProgram/Output/OutputWrapper.php b/src/CliProgram/Output/OutputWrapper.php index d183e66..bee7caa 100644 --- a/src/CliProgram/Output/OutputWrapper.php +++ b/src/CliProgram/Output/OutputWrapper.php @@ -2,6 +2,7 @@ namespace jrosset\CliProgram\Output; +use jrosset\CliProgram\CliHelper; use Symfony\Component\Console\Formatter\OutputFormatterInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -31,6 +32,14 @@ abstract class OutputWrapper implements OutputInterface { public function getOutput (): OutputInterface { return $this->output; } + /** + * The “error” output + * + * @return static The “error” output + */ + public function getErrorOutput (): self { + return new static(CliHelper::getErrorOutput($this)); + } /** * @inheritDoc