Skip to content

[FrameworkBundle] Fix debug:config & config:dump in debug mode #50546

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 8, 2023

Conversation

HypeMC
Copy link
Contributor

@HypeMC HypeMC commented Jun 4, 2023

Q A
Branch? 5.4
Bug fix? yes
New feature? no
Deprecations? no
Tickets Fix #47623
License MIT
Doc PR -

Displaying configs for extensions without a bundle using the debug:config & config:dump-reference commands works depending on whether debug is true or false. The reason behind this is the following code:

if (!$kernel->isDebug() || !(new ConfigCache($kernel->getContainer()->getParameter('debug.container.dump'), true))->isFresh()) {
$buildContainer = \Closure::bind(function () {
$this->initializeBundles();
return $this->buildContainer();
}, $kernel, \get_class($kernel));
$container = $buildContainer();
$container->getCompilerPassConfig()->setRemovingPasses([]);
$container->getCompilerPassConfig()->setAfterRemovingPasses([]);
$container->compile();
} else {
(new XmlFileLoader($container = new ContainerBuilder(), new FileLocator()))->load($kernel->getContainer()->getParameter('debug.container.dump'));
$locatorPass = new ServiceLocatorTagPass();
$locatorPass->process($container);
$container->getCompilerPassConfig()->setBeforeOptimizationPasses([]);
$container->getCompilerPassConfig()->setOptimizationPasses([]);
$container->getCompilerPassConfig()->setBeforeRemovingPasses([]);
}

When debug is true the extensions are never loaded in the container, so the commands don't work.

There are even tests for these cases but they are all executed with debug false.

This PR aims to make the commands work with both debug true & false. Another problem is that these extensions are not visible in the list of available extensions and are not offered by the completion feature, but since those seem more like new features I've created a separate PR for 6.4: #50548

@HypeMC HypeMC force-pushed the kernel-extensions-5.4 branch from 73871a7 to 2824fc5 Compare June 6, 2023 10:43
@nicolas-grekas
Copy link
Member

Thank you @HypeMC.

@nicolas-grekas nicolas-grekas merged commit dda4e7c into symfony:5.4 Jun 8, 2023
@HypeMC HypeMC deleted the kernel-extensions-5.4 branch June 8, 2023 19:22
nicolas-grekas added a commit that referenced this pull request Jun 8, 2023
…fig` & `config:dump` list view & completion (HypeMC)

This PR was merged into the 5.4 branch.

Discussion
----------

[FrameworkBundle] Show non-bundle extensions in `debug:config` & `config:dump` list view & completion

| Q             | A
| ------------- | ---
| Branch?       | 5.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Follow up to #50546 (should be merged first), adds non-bundle extensions to `debug:config` & `config:dump` list views:

```php
class Kernel extends BaseKernel implements ExtensionInterface, ConfigurationInterface
{
    use MicroKernelTrait;

    protected function build(ContainerBuilder $container)
    {
        $container->registerExtension(new MyExtension());
    }

    public function getAlias()
    {
        return 'kernel';
    }

    // ...
}
```

![image](https://github.com/symfony/symfony/assets/2445045/5c75d33a-155c-4602-abf8-8babc72286b6)

Commits
-------

b31f700 [FrameworkBundle] Show non-bundle extensions in `debug:config` & `config:dump` list view & completion
This was referenced Jun 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants