![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/symfony/framework-bundle/Command/ |
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <[email protected]> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\FrameworkBundle\Command; use Symfony\Bundle\FrameworkBundle\Console\Helper\DescriptorHelper; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Completion\CompletionInput; use Symfony\Component\Console\Completion\CompletionSuggestions; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\HttpKernel\Debug\FileLinkFormatter; use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\RouterInterface; /** * A console command for retrieving information about routes. * * @author Fabien Potencier <[email protected]> * @author Tobias Schultze <http://tobion.de> * * @final */ class RouterDebugCommand extends Command { use BuildDebugContainerTrait; protected static $defaultName = 'debug:router'; protected static $defaultDescription = 'Display current routes for an application'; private $router; private $fileLinkFormatter; public function __construct(RouterInterface $router, ?FileLinkFormatter $fileLinkFormatter = null) { parent::__construct(); $this->router = $router; $this->fileLinkFormatter = $fileLinkFormatter; } /** * {@inheritdoc} */ protected function configure() { $this ->setDefinition([ new InputArgument('name', InputArgument::OPTIONAL, 'A route name'), new InputOption('show-controllers', null, InputOption::VALUE_NONE, 'Show assigned controllers in overview'), new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw route(s)'), ]) ->setDescription(self::$defaultDescription) ->setHelp(<<<'EOF' The <info>%command.name%</info> displays the configured routes: <info>php %command.full_name%</info> EOF ) ; } /** * {@inheritdoc} * * @throws InvalidArgumentException When route does not exist */ protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $name = $input->getArgument('name'); $helper = new DescriptorHelper($this->fileLinkFormatter); $routes = $this->router->getRouteCollection(); $container = null; if ($this->fileLinkFormatter) { $container = function () { return $this->getContainerBuilder($this->getApplication()->getKernel()); }; } if ($name) { $route = $routes->get($name); $matchingRoutes = $this->findRouteNameContaining($name, $routes); if (!$input->isInteractive() && !$route && \count($matchingRoutes) > 1) { $helper->describe($io, $this->findRouteContaining($name, $routes), [ 'format' => $input->getOption('format'), 'raw_text' => $input->getOption('raw'), 'show_controllers' => $input->getOption('show-controllers'), 'output' => $io, ]); return 0; } if (!$route && $matchingRoutes) { $default = 1 === \count($matchingRoutes) ? $matchingRoutes[0] : null; $name = $io->choice('Select one of the matching routes', $matchingRoutes, $default); $route = $routes->get($name); } if (!$route) { throw new InvalidArgumentException(sprintf('The route "%s" does not exist.', $name)); } $helper->describe($io, $route, [ 'format' => $input->getOption('format'), 'raw_text' => $input->getOption('raw'), 'name' => $name, 'output' => $io, 'container' => $container, ]); } else { $helper->describe($io, $routes, [ 'format' => $input->getOption('format'), 'raw_text' => $input->getOption('raw'), 'show_controllers' => $input->getOption('show-controllers'), 'output' => $io, 'container' => $container, ]); } return 0; } private function findRouteNameContaining(string $name, RouteCollection $routes): array { $foundRoutesNames = []; foreach ($routes as $routeName => $route) { if (false !== stripos($routeName, $name)) { $foundRoutesNames[] = $routeName; } } return $foundRoutesNames; } public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void { if ($input->mustSuggestArgumentValuesFor('name')) { $suggestions->suggestValues(array_keys($this->router->getRouteCollection()->all())); return; } if ($input->mustSuggestOptionValuesFor('format')) { $helper = new DescriptorHelper(); $suggestions->suggestValues($helper->getFormats()); } } private function findRouteContaining(string $name, RouteCollection $routes): RouteCollection { $foundRoutes = new RouteCollection(); foreach ($routes as $routeName => $route) { if (false !== stripos($routeName, $name)) { $foundRoutes->add($routeName, $route); } } return $foundRoutes; } }