diff --git a/src/CliProgram/CliHelper.php b/src/CliProgram/CliHelper.php index 0a1646d..8f4ed42 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 1292b3b..f40dfef 100644 --- a/src/CliProgram/Output/OutputWithLogger.php +++ b/src/CliProgram/Output/OutputWithLogger.php @@ -4,6 +4,7 @@ namespace jrosset\CliProgram\Output; use InvalidArgumentException; +use jrosset\CliProgram\CliHelper; use Psr\Log\LoggerInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -39,6 +40,13 @@ class OutputWithLogger extends OutputWrapper { $this->setLogger($logger); } + /** + * @inheritDoc + */ + public function getErrorOutput (): static { + 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 f3d600d..b230271 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 (): static { + return new static(CliHelper::getErrorOutput($this)); + } /** * @inheritDoc