symfonyStyle = $symfonyStyle;
}
public function report(ProcessResult $processResult, Configuration $configuration) : void
{
if ($configuration->shouldShowDiffs()) {
$this->reportFileDiffs($processResult->getFileDiffs(), $configuration->isReportingWithRealPath());
}
$this->reportErrors($processResult->getSystemErrors(), $configuration->isReportingWithRealPath());
if ($processResult->getSystemErrors() !== []) {
return;
}
// to keep space between progress bar and success message
if ($configuration->shouldShowProgressBar() && $processResult->getFileDiffs() === []) {
$this->symfonyStyle->newLine();
}
$message = $this->createSuccessMessage($processResult, $configuration);
$this->symfonyStyle->success($message);
}
public function getName() : string
{
return self::NAME;
}
/**
* @param FileDiff[] $fileDiffs
*/
private function reportFileDiffs(array $fileDiffs, bool $absoluteFilePath) : void
{
if (\count($fileDiffs) <= 0) {
return;
}
// normalize
\ksort($fileDiffs);
$message = \sprintf('%d file%s with changes', \count($fileDiffs), \count($fileDiffs) === 1 ? '' : 's');
$this->symfonyStyle->title($message);
$i = 0;
foreach ($fileDiffs as $fileDiff) {
$filePath = $absoluteFilePath ? $fileDiff->getAbsoluteFilePath() ?? '' : $fileDiff->getRelativeFilePath();
// append line number for faster file jump in diff
$firstLineNumber = $fileDiff->getFirstLineNumber();
if ($firstLineNumber !== null) {
$filePath .= ':' . $firstLineNumber;
}
$filePathWithUrl = $this->addEditorUrl($filePath, $fileDiff->getAbsoluteFilePath(), $fileDiff->getRelativeFilePath(), (string) $fileDiff->getFirstLineNumber());
$message = \sprintf('