tagName = $tagName; } public function process(ContainerBuilder $container): void { if (!$container->hasDefinition(CommandRegistry::class)) { return; } $commandRegistryDefinition = $container->findDefinition(CommandRegistry::class); foreach ($container->findTaggedServiceIds($this->tagName) as $serviceName => $tags) { $commandServiceDefinition = $container->findDefinition($serviceName)->setPublic(true); $commandName = null; $description = null; $hidden = false; $aliases = []; foreach ($tags as $attributes) { $command = $attributes['command'] ?? null; $description = $attributes['description'] ?? $description; $hidden = $attributes['hidden'] ?? $hidden; $schedulable = $attributes['schedulable'] ?? true; $aliasFor = null; if ($command === null) { continue; } $isAlias = $commandName !== null || ($attributes['alias'] ?? false); if (!$isAlias) { $commandName = $attributes['command']; } else { $aliasFor = $commandName; $aliases[] = $attributes['command']; } $commandRegistryDefinition->addMethodCall('addLazyCommand', [ $command, $serviceName, $description, $hidden, $schedulable, $aliasFor, ]); } $commandServiceDefinition->addMethodCall('setName', [$commandName]); if ($description) { $commandServiceDefinition->addMethodCall('setDescription', [$description]); } if ($hidden) { $commandServiceDefinition->addMethodCall('setHidden', [true]); } if ($aliases) { $commandServiceDefinition->addMethodCall('setAliases', [$aliases]); } } } }