diff --git a/src/Application.php b/src/Application.php index 6c730387..a8d0adae 100644 --- a/src/Application.php +++ b/src/Application.php @@ -8,6 +8,7 @@ use PhpSchool\PhpWorkshop\Check\CheckRepository; use PhpSchool\PhpWorkshop\Exception\MissingArgumentException; use PhpSchool\PhpWorkshop\Exercise\ExerciseInterface; +use PhpSchool\PhpWorkshop\Factory\ResultRendererFactory; use PhpSchool\PhpWorkshop\Output\OutputInterface; use PhpSchool\PhpWorkshop\ResultRenderer\ResultRendererInterface; @@ -33,6 +34,11 @@ final class Application */ private $exercises = []; + /** + * @var array + */ + private $results = []; + /** * @var string */ @@ -82,6 +88,21 @@ public function addExercise($exercise) $this->exercises[] = $exercise; } + /** + * @param string $resultClass + * @param string $resultRendererClass + */ + public function addResult($resultClass, $resultRendererClass) + { + Assertion::classExists($resultClass); + Assertion::classExists($resultRendererClass); + + $this->results[] = [ + 'resultClass' => $resultClass, + 'resultRendererClass' => $resultRendererClass + ]; + } + /** * @param string $logo */ @@ -152,6 +173,14 @@ public function run() $checkRepository->registerCheck($container->get($check)); } + if (!empty($this->results)) { + $resultFactory = $container->get(ResultRendererFactory::class); + + foreach ($this->results as $result) { + $resultFactory->registerRenderer($result['resultClass'], $result['resultRendererClass']); + } + } + try { $exitCode = $container->get(CommandRouter::class)->route(); } catch (MissingArgumentException $e) {