@@ -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
0 commit comments