addArgument("service", InputArgument::OPTIONAL, "Search query"); } protected function execute(InputInterface $input, OutputInterface $output) { $serviceRegistry = $this->getServiceRegistry(); $services = $serviceRegistry->findAllServices(); $query = $input->getArgument("service"); $output->writeln($query?"Services matching {$query}:":"Available services:"); foreach ($services as $service) { $tags = $service['tags']??[]; // Filter out, if we have a query if ($query && !((in_array($query,$tags) || str_contains($service['description'],$query) || $service['name']==$query))) continue; if ($tags) { $tags = '#'.join(",#", $tags).""; } else { $tags = ""; } $output->writeln(sprintf(" %s: %s %s", $service['name'], $service['description']??"?", $tags)); } return self::SUCCESS; } }