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