88use PhpSchool \PhpWorkshop \Check \CheckRepository ;
99use PhpSchool \PhpWorkshop \Exception \MissingArgumentException ;
1010use PhpSchool \PhpWorkshop \Exercise \ExerciseInterface ;
11+ use PhpSchool \PhpWorkshop \Factory \ResultRendererFactory ;
1112use PhpSchool \PhpWorkshop \Output \OutputInterface ;
1213use 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