Skip to content

Commit b36d3c8

Browse files
committed
Installed package detection in symfony framework extension
1 parent 7745215 commit b36d3c8

File tree

4 files changed

+19
-25
lines changed

4 files changed

+19
-25
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
],
1313
"require": {
1414
"php": "^7.2",
15+
"composer-runtime-api": "^2.0",
1516
"symfony/framework-bundle": "^4.4|^5.0",
1617
"yokai/batch": "self.version"
1718
},

src/DependencyInjection/Configuration.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ private function storage(): ArrayNodeDefinition
3333
$node = (new TreeBuilder('storage'))->getRootNode();
3434

3535
$node
36+
->addDefaultsIfNotSet()
3637
->children()
3738
->arrayNode('filesystem')
39+
->addDefaultsIfNotSet()
3840
->children()
3941
->scalarNode('dir')
4042
->defaultValue('%kernel.project_dir%/var/batch')

src/DependencyInjection/YokaiBatchExtension.php

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Yokai\Batch\Bridge\Symfony\Framework\DependencyInjection;
66

7+
use Composer\InstalledVersions;
78
use Symfony\Component\Config\FileLocator;
89
use Symfony\Component\Config\Loader as ConfigLoader;
910
use Symfony\Component\Console\Application;
@@ -34,15 +35,13 @@ public function load(array $configs, ContainerBuilder $container): void
3435

3536
$loader = $this->getLoader($container);
3637
$loader->load('global/');
37-
$bundles = $container->getParameter('kernel.bundles');
3838

3939
$bridges = [
40-
'doctrine/orm/' => isset($bundles['DoctrineBundle']),
41-
'doctrine/mongodb/' => isset($bundles['DoctrineMongoDBBundle']),
42-
'symfony/console/' => class_exists(Application::class),
43-
'symfony/messenger/' => class_exists(MessageBusInterface::class),
44-
'symfony/serializer/' => interface_exists(SerializerInterface::class),
45-
'symfony/validator/' => interface_exists(ValidatorInterface::class),
40+
'doctrine/orm/' => $this->installed('doctrine-orm'),
41+
'symfony/console/' => $this->installed('symfony-console'),
42+
'symfony/messenger/' => $this->installed('symfony-messenger'),
43+
'symfony/serializer/' => $this->installed('symfony-serializer'),
44+
'symfony/validator/' => $this->installed('symfony-validator'),
4645
];
4746

4847
foreach (array_keys(array_filter($bridges)) as $resource) {
@@ -60,6 +59,15 @@ public function load(array $configs, ContainerBuilder $container): void
6059
$container->setAlias(JobLauncherInterface::class, $launcher);
6160
}
6261

62+
private function installed(string $package): bool
63+
{
64+
if (InstalledVersions::isInstalled('yokai/batch-src')) {
65+
return true;
66+
}
67+
68+
return InstalledVersions::isInstalled('yokai/batch-' . $package);
69+
}
70+
6371
private function getLoader(ContainerBuilder $container): ConfigLoader\LoaderInterface
6472
{
6573
$locator = new FileLocator(__DIR__ . '/../Resources/services');
@@ -89,7 +97,7 @@ private function configureStorage(ContainerBuilder $container, array $config): v
8997
;
9098

9199
$defaultStorage = 'yokai_batch.storage.dbal';
92-
} elseif (isset($config['filesystem'])) {
100+
} else {
93101
$container
94102
->register('yokai_batch.storage.filesystem', FilesystemJobExecutionStorage::class)
95103
->setArguments(
@@ -101,8 +109,6 @@ private function configureStorage(ContainerBuilder $container, array $config): v
101109
;
102110

103111
$defaultStorage = 'yokai_batch.storage.filesystem';
104-
} else {
105-
throw new \LogicException();//todo
106112
}
107113

108114
try {

src/Resources/services/doctrine/mongodb/item.xml

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)