Skip to content

Commit ffd3ec7

Browse files
committed
Add custom results via Application class
1 parent a9183cf commit ffd3ec7

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/Application.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use PhpSchool\PhpWorkshop\Check\CheckRepository;
99
use PhpSchool\PhpWorkshop\Exception\MissingArgumentException;
1010
use PhpSchool\PhpWorkshop\Exercise\ExerciseInterface;
11+
use PhpSchool\PhpWorkshop\Factory\ResultRendererFactory;
1112
use PhpSchool\PhpWorkshop\Output\OutputInterface;
1213
use PhpSchool\PhpWorkshop\ResultRenderer\ResultRendererInterface;
1314

@@ -33,6 +34,11 @@ final class Application
3334
*/
3435
private $exercises = [];
3536

37+
/**
38+
* @var array
39+
*/
40+
private $results = [];
41+
3642
/**
3743
* @var string
3844
*/
@@ -82,6 +88,21 @@ public function addExercise($exercise)
8288
$this->exercises[] = $exercise;
8389
}
8490

91+
/**
92+
* @param string $resultClass
93+
* @param string $resultRendererClass
94+
*/
95+
public function addResult($resultClass, $resultRendererClass)
96+
{
97+
Assertion::classExists($resultClass);
98+
Assertion::classExists($resultRendererClass);
99+
100+
$this->results[] = [
101+
'resultClass' => $resultClass,
102+
'resultRendererClass' => $resultRendererClass
103+
];
104+
}
105+
85106
/**
86107
* @param string $logo
87108
*/
@@ -152,6 +173,14 @@ public function run()
152173
$checkRepository->registerCheck($container->get($check));
153174
}
154175

176+
if (!empty($this->results)) {
177+
$resultFactory = $container->get(ResultRendererFactory::class);
178+
179+
foreach ($this->results as $result) {
180+
$resultFactory->registerRenderer($result['resultClass'], $result['resultRendererClass']);
181+
}
182+
}
183+
155184
try {
156185
$exitCode = $container->get(CommandRouter::class)->route();
157186
} catch (MissingArgumentException $e) {

0 commit comments

Comments
 (0)