Skip to content

Commit 33d692f

Browse files
committed
[FrameworkBundle] Add --show-aliases option to debug:router command
1 parent bf2d7fa commit 33d692f

File tree

9 files changed

+58
-2
lines changed

9 files changed

+58
-2
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ CHANGELOG
4747
* Deprecate the `Http\Client\HttpClient` service, use `Psr\Http\Client\ClientInterface` instead
4848
* Add `stop_worker_on_signals` configuration option to `messenger` to define signals which would stop a worker
4949
* Add support for `--all` option to clear all cache pools with `cache:pool:clear` command
50+
* Add `--show-aliases` option to `debug:router` command
5051

5152
6.2
5253
---

src/Symfony/Bundle/FrameworkBundle/Command/RouterDebugCommand.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ protected function configure(): void
5656
->setDefinition([
5757
new InputArgument('name', InputArgument::OPTIONAL, 'A route name'),
5858
new InputOption('show-controllers', null, InputOption::VALUE_NONE, 'Show assigned controllers in overview'),
59+
new InputOption('show-aliases', null, InputOption::VALUE_NONE, 'Show aliases in overview'),
5960
new InputOption('format', null, InputOption::VALUE_REQUIRED, sprintf('The output format ("%s")', implode('", "', $this->getAvailableFormatOptions())), 'txt'),
6061
new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw route(s)'),
6162
])
@@ -92,6 +93,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
9293
'format' => $input->getOption('format'),
9394
'raw_text' => $input->getOption('raw'),
9495
'show_controllers' => $input->getOption('show-controllers'),
96+
'show_aliases' => $input->getOption('show-aliases'),
9597
'output' => $io,
9698
]);
9799

@@ -120,6 +122,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
120122
'format' => $input->getOption('format'),
121123
'raw_text' => $input->getOption('raw'),
122124
'show_controllers' => $input->getOption('show-controllers'),
125+
'show_aliases' => $input->getOption('show-aliases'),
123126
'output' => $io,
124127
'container' => $container,
125128
]);

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,19 @@ protected function sortByPriority(array $tag): array
260260
return $tag;
261261
}
262262

263+
/**
264+
* @return array<string, string[]>
265+
*/
266+
protected function getReverseAliases(RouteCollection $routes): array
267+
{
268+
$reverseAliases = [];
269+
foreach ($routes->getAliases() as $name => $alias) {
270+
$reverseAliases[$alias->getId()][] = $name;
271+
}
272+
273+
return $reverseAliases;
274+
}
275+
263276
public static function getClassDescription(string $class, string &$resolvedClass = null): string
264277
{
265278
$resolvedClass = $class;

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/JsonDescriptor.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ protected function describeRouteCollection(RouteCollection $routes, array $optio
3737
$data = [];
3838
foreach ($routes->all() as $name => $route) {
3939
$data[$name] = $this->getRouteData($route);
40+
if (($showAliases ??= $options['show_aliases'] ?? false) && $aliases = ($reverseAliases ??= $this->getReverseAliases($routes))[$name] ?? []) {
41+
$data[$name]['aliases'] = $aliases;
42+
}
4043
}
4144

4245
$this->writeData($data, $options);

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/MarkdownDescriptor.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ protected function describeRouteCollection(RouteCollection $routes, array $optio
3939
$this->write("\n\n");
4040
}
4141
$this->describeRoute($route, ['name' => $name]);
42+
if (($showAliases ??= $options['show_aliases'] ?? false) && $aliases = ($reverseAliases ??= $this->getReverseAliases($routes))[$name] ?? []) {
43+
$this->write(sprintf("- Aliases: \n%s", implode("\n", array_map(static fn (string $alias): string => sprintf(' - %s', $alias), $aliases))));
44+
}
4245
}
4346
$this->write("\n");
4447
}

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ protected function describeRouteCollection(RouteCollection $routes, array $optio
5353
$tableHeaders[] = 'Controller';
5454
}
5555

56+
if ($showAliases = $options['show_aliases'] ?? false) {
57+
$tableHeaders[] = 'Aliases';
58+
}
59+
5660
$tableRows = [];
5761
foreach ($routes->all() as $name => $route) {
5862
$controller = $route->getDefault('_controller');
@@ -69,6 +73,10 @@ protected function describeRouteCollection(RouteCollection $routes, array $optio
6973
$row[] = $controller ? $this->formatControllerLink($controller, $this->formatCallable($controller), $options['container'] ?? null) : '';
7074
}
7175

76+
if ($showAliases) {
77+
$row[] = implode('|', ($reverseAliases ??= $this->getReverseAliases($routes))[$name] ?? []);
78+
}
79+
7280
$tableRows[] = $row;
7381
}
7482

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/XmlDescriptor.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class XmlDescriptor extends Descriptor
3535
{
3636
protected function describeRouteCollection(RouteCollection $routes, array $options = []): void
3737
{
38-
$this->writeDocument($this->getRouteCollectionDocument($routes));
38+
$this->writeDocument($this->getRouteCollectionDocument($routes, $options));
3939
}
4040

4141
protected function describeRoute(Route $route, array $options = []): void
@@ -141,13 +141,21 @@ private function writeDocument(\DOMDocument $dom): void
141141
$this->write($dom->saveXML());
142142
}
143143

144-
private function getRouteCollectionDocument(RouteCollection $routes): \DOMDocument
144+
private function getRouteCollectionDocument(RouteCollection $routes, array $options): \DOMDocument
145145
{
146146
$dom = new \DOMDocument('1.0', 'UTF-8');
147147
$dom->appendChild($routesXML = $dom->createElement('routes'));
148148

149149
foreach ($routes->all() as $name => $route) {
150150
$routeXML = $this->getRouteDocument($route, $name);
151+
if (($showAliases ??= $options['show_aliases'] ?? false) && $aliases = ($reverseAliases ??= $this->getReverseAliases($routes))[$name] ?? []) {
152+
$routeXML->firstChild->appendChild($aliasesXML = $routeXML->createElement('aliases'));
153+
foreach ($aliases as $alias) {
154+
$aliasesXML->appendChild($aliasXML = $routeXML->createElement('alias'));
155+
$aliasXML->appendChild(new \DOMText($alias));
156+
}
157+
}
158+
151159
$routesXML->appendChild($routesXML->ownerDocument->importNode($routeXML->childNodes->item(0), true));
152160
}
153161

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/RouterDebugCommandTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,20 @@ public function testComplete(array $input, array $expectedSuggestions)
9696
$this->assertSame($expectedSuggestions, $tester->complete($input));
9797
}
9898

99+
/**
100+
* @testWith ["txt"]
101+
* ["xml"]
102+
* ["json"]
103+
* ["md"]
104+
*/
105+
public function testShowAliases(string $format)
106+
{
107+
$tester = $this->createCommandTester();
108+
109+
$this->assertSame(0, $tester->execute(['--show-aliases' => true, '--format' => $format]));
110+
$this->assertStringContainsString('my_custom_alias', $tester->getDisplay());
111+
}
112+
99113
public static function provideCompletionSuggestions()
100114
{
101115
yield 'option --format' => [

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/RouterDebug/routing.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,6 @@ routerdebug_session_logout:
1313
routerdebug_test:
1414
path: /test
1515
defaults: { _controller: Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\Controller\SessionController::welcomeAction }
16+
17+
my_custom_alias:
18+
alias: routerdebug_test

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy