Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 12 additions & 29 deletions src/Command/SitemapChecker.php
Original file line number Diff line number Diff line change
Expand Up @@ -204,44 +204,27 @@ protected function execute(InputInterface $input, OutputInterface $output):int
}

$progressBar->finish();
// We don't want to print our next output after the progress bar.
$output->writeln('');

$resultFile = $input->getOption('result-file');

if ($resultFile === NULL) {
// Write a blank line to print the results correctly.
$resultRender = new PlainResultRender();
$output->writeln('');
$output->writeln($resultRender->render($results));
}
elseif (is_string($resultFile) && str_contains($resultFile, '.csv')) {
$io->info('Writing CSV file.');
$resultRender = new CsvResultRender();
$renderedResult = $resultRender->render($results);
file_put_contents($resultFile, $renderedResult);
}
elseif (is_string($resultFile) && str_contains($resultFile, '.json')) {
$io->info('Writing JSON file.');
$resultRender = new JsonResultRender();
$renderedResult = $resultRender->render($results);
file_put_contents($resultFile, $renderedResult);
}
elseif (is_string($resultFile) && str_contains($resultFile, '.xml')) {
$io->info('Writing XML file.');
$resultRender = new XmlResultRender();
$renderedResult = $resultRender->render($results);
file_put_contents($resultFile, $renderedResult);
}
elseif (is_string($resultFile) && str_contains($resultFile, '.html')) {
$io->info('Writing HTML file.');
$resultRender = new HtmlResultRender();
$renderedResult = $resultRender->render($results);
file_put_contents($resultFile, $renderedResult);
}
else {
$io->error('Invalid output format found.');
return Command::INVALID;
$resultExt = strtolower(pathinfo($resultFile, PATHINFO_EXTENSION));
$resultRender = match ($resultExt) {
'csv' => new CsvResultRender(),
'json' => new JsonResultRender(),
'xml' => new XmlResultRender(),
'html' => new HtmlResultRender(),
default => new PlainResultRender(),
};
$io->info(sprintf('Writing %s file.', $resultRender->getType()));
file_put_contents($resultFile, $resultRender->render($results));
}

return Command::SUCCESS;
}

Expand Down
4 changes: 4 additions & 0 deletions src/ResultRender/CsvResultRender.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,9 @@ public function render(ResultCollectionInterface $resultCollection): string
return $string;
}

public function getType(): string
{
return 'CSV';
}

}
4 changes: 4 additions & 0 deletions src/ResultRender/HtmlResultRender.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,9 @@ public function render(ResultCollectionInterface $resultCollection): string
EOL;
}

public function getType(): string
{
return 'HTML';
}

}
4 changes: 4 additions & 0 deletions src/ResultRender/JsonResultRender.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,9 @@ public function render(ResultCollectionInterface $resultCollection): string
return json_encode($array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK) ?: '';
}

public function getType(): string
{
return 'JSON';
}

}
4 changes: 4 additions & 0 deletions src/ResultRender/PlainResultRender.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,9 @@ public function render(ResultCollectionInterface $resultCollection): string
return $string;
}

public function getType(): string
{
return 'plain';
}

}
1 change: 1 addition & 0 deletions src/ResultRender/ResultRenderInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@

interface ResultRenderInterface {
public function render(ResultCollectionInterface $resultCollection): string;
public function getType(): string;
}
4 changes: 4 additions & 0 deletions src/ResultRender/XmlResultRender.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,9 @@ public function render(ResultCollectionInterface $resultCollection): string
return $xml->asXML() ?: '';
}

public function getType(): string
{
return 'XML';
}

}
6 changes: 6 additions & 0 deletions tests/ResultRenderer/CsvResultRendererTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,10 @@ public function testCsvRenderPrintsResultCorrectly()
$this->assertStringContainsString('"https://www.example.com/","Title","200"', $renderedResult);
}

public function testCsvRenderReturnsType()
{
$resultRenderer = new CsvResultRender();
$this->assertEquals('CSV', $resultRenderer->getType());
}

}
6 changes: 6 additions & 0 deletions tests/ResultRenderer/HtmlResultRendererTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,10 @@ public function testHtmlRenderPrintsResultCorrectly()
$this->assertStringContainsString('<li><strong>Response Code:</strong> 200</li>', $renderedResult);
}

public function testHtmlRenderReturnsType()
{
$resultRenderer = new HtmlResultRender();
$this->assertEquals('HTML', $resultRenderer->getType());
}

}
6 changes: 6 additions & 0 deletions tests/ResultRenderer/JsonResultRendererTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,10 @@ public function testJsonRenderPrintsResultCorrectly()
$this->assertStringContainsString('"response_code":200', $renderedResult);
}

public function testJsonRenderReturnsType()
{
$resultRenderer = new JsonResultRender();
$this->assertEquals('JSON', $resultRenderer->getType());
}

}
6 changes: 6 additions & 0 deletions tests/ResultRenderer/PlainResultRendererTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,10 @@ public function testPlainRenderPrintsResultCorrectly()
$this->assertStringContainsString('https://www.example.com/ Title 200', $renderedResult);
}

public function testPlainRenderReturnsType()
{
$resultRenderer = new PlainResultRender();
$this->assertEquals('plain', $resultRenderer->getType());
}

}
6 changes: 6 additions & 0 deletions tests/ResultRenderer/XmlResultRendererTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,10 @@ public function testXmlRenderPrintsResultCorrectly()
$this->assertStringContainsString('<response_code>200</response_code>', $renderedResult);
}

public function testXmlRenderReturnsType()
{
$resultRenderer = new XmlResultRender();
$this->assertEquals('XML', $resultRenderer->getType());
}

}