From d869606655d9f514baecb7c90e2c9958e5d5c756 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Tue, 28 May 2019 16:28:46 +0200 Subject: [PATCH] unite OutputFormatterInterface to report() method --- src/Console/Command/ProcessCommand.php | 4 ++-- src/Console/Output/ConsoleOutputFormatter.php | 11 ++++++++-- src/Console/Output/JsonOutputFormatter.php | 22 +++++-------------- .../Output/OutputFormatterInterface.php | 13 ++--------- 4 files changed, 18 insertions(+), 32 deletions(-) diff --git a/src/Console/Command/ProcessCommand.php b/src/Console/Command/ProcessCommand.php index d74a4f5ea22..5b0da3809d1 100644 --- a/src/Console/Command/ProcessCommand.php +++ b/src/Console/Command/ProcessCommand.php @@ -164,10 +164,9 @@ final class ProcessCommand extends AbstractCommand $outputFormat = (string) $input->getOption(Option::OPTION_OUTPUT_FORMAT); $outputFormatter = $this->outputFormatterCollector->getByName($outputFormat); - $outputFormatter->reportFileDiffs($this->errorAndDiffCollector->getFileDiffs()); + $outputFormatter->report($this->errorAndDiffCollector); if ($this->errorAndDiffCollector->getErrors() !== []) { - $outputFormatter->reportErrors($this->errorAndDiffCollector->getErrors()); return Shell::CODE_ERROR; } @@ -182,6 +181,7 @@ final class ProcessCommand extends AbstractCommand ) + $this->errorAndDiffCollector->getRemovedAndAddedFilesCount() )); + // inverse error code for CI dry-run if ($this->configuration->isDryRun() && count($this->errorAndDiffCollector->getFileDiffs())) { return Shell::CODE_ERROR; } diff --git a/src/Console/Output/ConsoleOutputFormatter.php b/src/Console/Output/ConsoleOutputFormatter.php index f59dee34925..5bd0d961d00 100644 --- a/src/Console/Output/ConsoleOutputFormatter.php +++ b/src/Console/Output/ConsoleOutputFormatter.php @@ -3,6 +3,7 @@ namespace Rector\Console\Output; use Rector\Application\Error; +use Rector\Application\ErrorAndDiffCollector; use Rector\Contract\Console\Output\OutputFormatterInterface; use Rector\Reporting\FileDiff; use Symfony\Component\Console\Style\SymfonyStyle; @@ -24,6 +25,12 @@ final class ConsoleOutputFormatter implements OutputFormatterInterface $this->symfonyStyle = $symfonyStyle; } + public function report(ErrorAndDiffCollector $errorAndDiffCollector): void + { + $this->reportFileDiffs($errorAndDiffCollector->getFileDiffs()); + $this->reportErrors($errorAndDiffCollector->getErrors()); + } + public function getName(): string { return self::NAME; @@ -32,7 +39,7 @@ final class ConsoleOutputFormatter implements OutputFormatterInterface /** * @param FileDiff[] $fileDiffs */ - public function reportFileDiffs(array $fileDiffs): void + private function reportFileDiffs(array $fileDiffs): void { if (count($fileDiffs) <= 0) { return; @@ -64,7 +71,7 @@ final class ConsoleOutputFormatter implements OutputFormatterInterface /** * @param Error[] $errors */ - public function reportErrors(array $errors): void + private function reportErrors(array $errors): void { foreach ($errors as $error) { $message = sprintf( diff --git a/src/Console/Output/JsonOutputFormatter.php b/src/Console/Output/JsonOutputFormatter.php index 1d14079c8d8..235a9557bc9 100644 --- a/src/Console/Output/JsonOutputFormatter.php +++ b/src/Console/Output/JsonOutputFormatter.php @@ -3,9 +3,8 @@ namespace Rector\Console\Output; use Nette\Utils\Json; -use Rector\Application\Error; +use Rector\Application\ErrorAndDiffCollector; use Rector\Contract\Console\Output\OutputFormatterInterface; -use Rector\Reporting\FileDiff; use Symfony\Component\Console\Style\SymfonyStyle; final class JsonOutputFormatter implements OutputFormatterInterface @@ -25,11 +24,10 @@ final class JsonOutputFormatter implements OutputFormatterInterface return 'json'; } - /** - * @param FileDiff[] $fileDiffs - */ - public function reportFileDiffs(array $fileDiffs): void + public function report(ErrorAndDiffCollector $errorAndDiffCollector): void { + $fileDiffs = $errorAndDiffCollector->getFileDiffs(); + $errorsArray = []; $errorsArray['totals']['changed_files'] = count($fileDiffs); @@ -43,17 +41,7 @@ final class JsonOutputFormatter implements OutputFormatterInterface ]; } - $json = Json::encode($errorsArray, Json::PRETTY); - - $this->symfonyStyle->writeln($json); - } - - /** - * @param Error[] $errors - */ - public function reportErrors(array $errors): void - { - $errorsArray = []; + $errors = $errorAndDiffCollector->getErrors(); $errorsArray['totals']['errors'] = count($errors); foreach ($errors as $error) { diff --git a/src/Contract/Console/Output/OutputFormatterInterface.php b/src/Contract/Console/Output/OutputFormatterInterface.php index 62db85d1920..bdcba98a184 100644 --- a/src/Contract/Console/Output/OutputFormatterInterface.php +++ b/src/Contract/Console/Output/OutputFormatterInterface.php @@ -2,20 +2,11 @@ namespace Rector\Contract\Console\Output; -use Rector\Application\Error; -use Rector\Reporting\FileDiff; +use Rector\Application\ErrorAndDiffCollector; interface OutputFormatterInterface { public function getName(): string; - /** - * @param FileDiff[] $fileDiffs - */ - public function reportFileDiffs(array $fileDiffs): void; - - /** - * @param Error[] $errors - */ - public function reportErrors(array $errors): void; + public function report(ErrorAndDiffCollector $errorAndDiffCollector): void; }