Skip to content

Commit bb35642

Browse files
Merge pull request #19 from jeroenvermeulen/result_output_improved
Result output improved
2 parents f259c63 + e1083b0 commit bb35642

12 files changed

Lines changed: 63 additions & 29 deletions

src/Command/SitemapChecker.php

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -204,44 +204,27 @@ protected function execute(InputInterface $input, OutputInterface $output):int
204204
}
205205

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

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

210212
if ($resultFile === NULL) {
211-
// Write a blank line to print the results correctly.
212213
$resultRender = new PlainResultRender();
213-
$output->writeln('');
214214
$output->writeln($resultRender->render($results));
215215
}
216-
elseif (is_string($resultFile) && str_contains($resultFile, '.csv')) {
217-
$io->info('Writing CSV file.');
218-
$resultRender = new CsvResultRender();
219-
$renderedResult = $resultRender->render($results);
220-
file_put_contents($resultFile, $renderedResult);
221-
}
222-
elseif (is_string($resultFile) && str_contains($resultFile, '.json')) {
223-
$io->info('Writing JSON file.');
224-
$resultRender = new JsonResultRender();
225-
$renderedResult = $resultRender->render($results);
226-
file_put_contents($resultFile, $renderedResult);
227-
}
228-
elseif (is_string($resultFile) && str_contains($resultFile, '.xml')) {
229-
$io->info('Writing XML file.');
230-
$resultRender = new XmlResultRender();
231-
$renderedResult = $resultRender->render($results);
232-
file_put_contents($resultFile, $renderedResult);
233-
}
234-
elseif (is_string($resultFile) && str_contains($resultFile, '.html')) {
235-
$io->info('Writing HTML file.');
236-
$resultRender = new HtmlResultRender();
237-
$renderedResult = $resultRender->render($results);
238-
file_put_contents($resultFile, $renderedResult);
239-
}
240216
else {
241-
$io->error('Invalid output format found.');
242-
return Command::INVALID;
217+
$resultExt = strtolower(pathinfo($resultFile, PATHINFO_EXTENSION));
218+
$resultRender = match ($resultExt) {
219+
'csv' => new CsvResultRender(),
220+
'json' => new JsonResultRender(),
221+
'xml' => new XmlResultRender(),
222+
'html' => new HtmlResultRender(),
223+
default => new PlainResultRender(),
224+
};
225+
$io->info(sprintf('Writing %s file.', $resultRender->getType()));
226+
file_put_contents($resultFile, $resultRender->render($results));
243227
}
244-
245228
return Command::SUCCESS;
246229
}
247230

src/ResultRender/CsvResultRender.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,9 @@ public function render(ResultCollectionInterface $resultCollection): string
2020
return $string;
2121
}
2222

23+
public function getType(): string
24+
{
25+
return 'CSV';
26+
}
2327

2428
}

src/ResultRender/HtmlResultRender.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,9 @@ public function render(ResultCollectionInterface $resultCollection): string
3636
EOL;
3737
}
3838

39+
public function getType(): string
40+
{
41+
return 'HTML';
42+
}
3943

4044
}

src/ResultRender/JsonResultRender.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,9 @@ public function render(ResultCollectionInterface $resultCollection): string
2323
return json_encode($array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK) ?: '';
2424
}
2525

26+
public function getType(): string
27+
{
28+
return 'JSON';
29+
}
2630

2731
}

src/ResultRender/PlainResultRender.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@ public function render(ResultCollectionInterface $resultCollection): string
1515
return $string;
1616
}
1717

18+
public function getType(): string
19+
{
20+
return 'plain';
21+
}
1822

1923
}

src/ResultRender/ResultRenderInterface.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66

77
interface ResultRenderInterface {
88
public function render(ResultCollectionInterface $resultCollection): string;
9+
public function getType(): string;
910
}

src/ResultRender/XmlResultRender.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,9 @@ public function render(ResultCollectionInterface $resultCollection): string
2222
return $xml->asXML() ?: '';
2323
}
2424

25+
public function getType(): string
26+
{
27+
return 'XML';
28+
}
2529

2630
}

tests/ResultRenderer/CsvResultRendererTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,10 @@ public function testCsvRenderPrintsResultCorrectly()
1313
$this->assertStringContainsString('"https://www.example.com/","Title","200"', $renderedResult);
1414
}
1515

16+
public function testCsvRenderReturnsType()
17+
{
18+
$resultRenderer = new CsvResultRender();
19+
$this->assertEquals('CSV', $resultRenderer->getType());
20+
}
21+
1622
}

tests/ResultRenderer/HtmlResultRendererTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,10 @@ public function testHtmlRenderPrintsResultCorrectly()
1717
$this->assertStringContainsString('<li><strong>Response Code:</strong> 200</li>', $renderedResult);
1818
}
1919

20+
public function testHtmlRenderReturnsType()
21+
{
22+
$resultRenderer = new HtmlResultRender();
23+
$this->assertEquals('HTML', $resultRenderer->getType());
24+
}
25+
2026
}

tests/ResultRenderer/JsonResultRendererTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,10 @@ public function testJsonRenderPrintsResultCorrectly()
1616
$this->assertStringContainsString('"response_code":200', $renderedResult);
1717
}
1818

19+
public function testJsonRenderReturnsType()
20+
{
21+
$resultRenderer = new JsonResultRender();
22+
$this->assertEquals('JSON', $resultRenderer->getType());
23+
}
24+
1925
}

0 commit comments

Comments
 (0)