diff --git a/DependencyInjection/MigrationCompilerPass.php b/DependencyInjection/MigrationCompilerPass.php index da34dc4..9a11d3c 100644 --- a/DependencyInjection/MigrationCompilerPass.php +++ b/DependencyInjection/MigrationCompilerPass.php @@ -11,6 +11,7 @@ namespace CoopTilleuls\MigrationBundle\DependencyInjection; +use CoopTilleuls\MigrationBundle\Loader\AbstractLoader; use Doctrine\Common\Inflector\Inflector; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; @@ -39,8 +40,16 @@ public function process(ContainerBuilder $container) { $services = []; foreach ($container->findTaggedServiceIds($this->tag) as $id => $attributes) { - $class = $container->getDefinition($id)->getClass(); + $definition = $container->getDefinition($id); + $class = $definition->getClass(); $reflection = new \ReflectionClass($class); + + // Override AbstractLoader parameters for autowiring + if ($reflection->isSubclassOf(AbstractLoader::class)) { + $definition->replaceArgument('$connectionName', $container->getParameter('coop_tilleuls_migration.legacy_connection_name')); + } + + // Generate aliases $alias = Inflector::tableize(preg_replace('/^(.*)Loader$/i', '$1', $reflection->getShortName())); $aliases = [$class, $alias, str_replace('_', '-', $alias)]; if (true === $this->allowAlias && isset($attributes[0]['alias'])) { diff --git a/features/app/LegacyBundle/Resources/config/services.yml b/features/app/LegacyBundle/Resources/config/services.yml index 3abe415..d4893c6 100644 --- a/features/app/LegacyBundle/Resources/config/services.yml +++ b/features/app/LegacyBundle/Resources/config/services.yml @@ -1,16 +1,8 @@ services: - legacy.loader.user: - class: CoopTilleuls\MigrationBundle\Tests\LegacyBundle\Loader\UserLoader - parent: coop_tilleuls_migration.loader.abstract - tags: - - { name: coop_tilleuls_migration.loader, alias: user } + _defaults: + autowire: true + autoconfigure: true + public: false - legacy.loader.foo: - class: CoopTilleuls\MigrationBundle\Tests\LegacyBundle\Loader\FooLoader - tags: - - { name: coop_tilleuls_migration.loader } - - legacy.transformer.user: - class: CoopTilleuls\MigrationBundle\Tests\LegacyBundle\Transformer\UserTransformer - tags: - - { name: coop_tilleuls_migration.transformer } + CoopTilleuls\MigrationBundle\Tests\LegacyBundle\: + resource: '%kernel.root_dir%/LegacyBundle/{Loader,Transformer}'