Remove default match from AbstractConfigCommand::findExtension

Previously, findExtension would return the first extension that might
not even match the $name parameter.
This commit is contained in:
Stepan Anchugov 2016-01-20 17:10:14 +05:00 committed by Fabien Potencier
parent a4f7fbfa04
commit b85059a672

View File

@ -48,26 +48,25 @@ abstract class AbstractConfigCommand extends ContainerDebugCommand
protected function findExtension($name) protected function findExtension($name)
{ {
$extension = null;
$bundles = $this->initializeBundles(); $bundles = $this->initializeBundles();
foreach ($bundles as $bundle) { foreach ($bundles as $bundle) {
if ($name === $bundle->getName()) {
return $bundle->getContainerExtension();
}
$extension = $bundle->getContainerExtension(); $extension = $bundle->getContainerExtension();
if ($extension && $name === $extension->getAlias()) {
if ($extension && ($name === $extension->getAlias() || $name === $bundle->getName())) { return $extension;
break;
} }
} }
if (!$extension) { if ('Bundle' !== substr($name, -6)) {
$message = sprintf('No extensions with configuration available for "%s"', $name);
} else {
$message = sprintf('No extension with alias "%s" is enabled', $name); $message = sprintf('No extension with alias "%s" is enabled', $name);
if (preg_match('/Bundle$/', $name)) {
$message = sprintf('No extensions with configuration available for "%s"', $name);
}
throw new \LogicException($message);
} }
return $extension; throw new \LogicException($message);
} }
public function validateConfiguration(ExtensionInterface $extension, $configuration) public function validateConfiguration(ExtensionInterface $extension, $configuration)