|
4 | 4 |
|
5 | 5 | use OndraM\CiDetector\CiDetector; |
6 | 6 | use PHPStan\Command\ErrorFormatter\BaselineNeonErrorFormatter; |
| 7 | +use PHPStan\Command\ErrorFormatter\BaselinePhpErrorFormatter; |
7 | 8 | use PHPStan\Command\ErrorFormatter\ErrorFormatter; |
8 | 9 | use PHPStan\Command\ErrorFormatter\TableErrorFormatter; |
9 | 10 | use PHPStan\Command\Symfony\SymfonyOutput; |
|
28 | 29 | use function fopen; |
29 | 30 | use function get_class; |
30 | 31 | use function implode; |
| 32 | +use function in_array; |
31 | 33 | use function is_array; |
32 | 34 | use function is_bool; |
33 | 35 | use function is_dir; |
@@ -202,8 +204,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int |
202 | 204 | return $inceptionResult->handleReturn(1, null); |
203 | 205 | } |
204 | 206 |
|
205 | | - if ($baselineExtension !== 'neon') { |
206 | | - $inceptionResult->getStdOutput()->getStyle()->error(sprintf('Baseline filename extension must be .neon, .%s was used instead.', $baselineExtension)); |
| 207 | + if (!in_array($baselineExtension, ['neon', 'php'], true)) { |
| 208 | + $inceptionResult->getStdOutput()->getStyle()->error(sprintf('Baseline filename extension must be .neon or .php, .%s was used instead.', $baselineExtension)); |
207 | 209 |
|
208 | 210 | return $inceptionResult->handleReturn(1, null); |
209 | 211 | } |
@@ -292,15 +294,20 @@ protected function execute(InputInterface $input, OutputInterface $output): int |
292 | 294 | return $inceptionResult->handleReturn(1, $analysisResult->getPeakMemoryUsageBytes()); |
293 | 295 | } |
294 | 296 |
|
295 | | - $baselineFileDirectory = dirname($generateBaselineFile); |
296 | | - $baselineErrorFormatter = new BaselineNeonErrorFormatter(new ParentDirectoryRelativePathHelper($baselineFileDirectory)); |
297 | | - |
298 | | - $existingBaselineContent = is_file($generateBaselineFile) ? FileReader::read($generateBaselineFile) : ''; |
299 | | - |
300 | 297 | $streamOutput = $this->createStreamOutput(); |
301 | 298 | $errorConsoleStyle = new ErrorsConsoleStyle(new StringInput(''), $streamOutput); |
302 | 299 | $baselineOutput = new SymfonyOutput($streamOutput, new SymfonyStyle($errorConsoleStyle)); |
303 | | - $baselineErrorFormatter->formatErrors($analysisResult, $baselineOutput, $existingBaselineContent); |
| 300 | + $baselineFileDirectory = dirname($generateBaselineFile); |
| 301 | + $baselinePathHelper = new ParentDirectoryRelativePathHelper($baselineFileDirectory); |
| 302 | + |
| 303 | + if ($baselineExtension === 'php') { |
| 304 | + $baselineErrorFormatter = new BaselinePhpErrorFormatter($baselinePathHelper); |
| 305 | + $baselineErrorFormatter->formatErrors($analysisResult, $baselineOutput); |
| 306 | + } else { |
| 307 | + $baselineErrorFormatter = new BaselineNeonErrorFormatter($baselinePathHelper); |
| 308 | + $existingBaselineContent = is_file($generateBaselineFile) ? FileReader::read($generateBaselineFile) : ''; |
| 309 | + $baselineErrorFormatter->formatErrors($analysisResult, $baselineOutput, $existingBaselineContent); |
| 310 | + } |
304 | 311 |
|
305 | 312 | $stream = $streamOutput->getStream(); |
306 | 313 | rewind($stream); |
|
0 commit comments