16
16
17
17
class MigrationsExtension extends Nette \DI \CompilerExtension
18
18
{
19
+ /** attributes = ['for' => names of target migration extensions] */
19
20
const TAG_GROUP = 'nextras.migrations.group ' ;
21
+
22
+ /** attributes = ['for' => names of target migration extensions, 'extension' => name of handled file extension] */
20
23
const TAG_EXTENSION_HANDLER = 'nextras.migrations.extensionHandler ' ;
21
24
22
25
/** @var array */
@@ -122,13 +125,18 @@ public function beforeCompile()
122
125
123
126
// configuration
124
127
$ groups = [];
125
- foreach ($ builder ->findByTag (self ::TAG_GROUP ) as $ serviceName => $ _ ) {
126
- $ groups [] = $ builder ->getDefinition ($ serviceName );
128
+ foreach ($ builder ->findByTag (self ::TAG_GROUP ) as $ serviceName => $ tagAttributes ) {
129
+ if (!isset ($ tagAttributes ['for ' ]) || in_array ($ this ->name , $ tagAttributes ['for ' ], true )) {
130
+ $ groups [] = $ builder ->getDefinition ($ serviceName );
131
+ }
127
132
}
128
133
129
134
$ extensionHandlers = [];
130
- foreach ($ builder ->findByTag (self ::TAG_EXTENSION_HANDLER ) as $ serviceName => $ extensionName ) {
131
- $ extensionHandlers [$ extensionName ] = $ builder ->getDefinition ($ serviceName );
135
+ foreach ($ builder ->findByTag (self ::TAG_EXTENSION_HANDLER ) as $ serviceName => $ tagAttributes ) {
136
+ if (!isset ($ tagAttributes ['for ' ]) || in_array ($ this ->name , $ tagAttributes ['for ' ], true )) {
137
+ $ extensionName = is_string ($ tagAttributes ) ? $ tagAttributes : $ tagAttributes ['extension ' ];
138
+ $ extensionHandlers [$ extensionName ] = $ builder ->getDefinition ($ serviceName );
139
+ }
132
140
}
133
141
134
142
$ builder ->getDefinition ($ this ->prefix ('configuration ' ))
@@ -246,7 +254,7 @@ private function createGroupDefinitions(array $groups)
246
254
247
255
$ serviceName = lcfirst (str_replace ('- ' , '' , ucwords ($ groupName , '- ' )));
248
256
$ groupDefinitions [] = $ builder ->addDefinition ($ this ->prefix ("group. $ serviceName " ))
249
- ->addTag (self ::TAG_GROUP )
257
+ ->addTag (self ::TAG_GROUP , [ ' for ' => [ $ this -> name ]] )
250
258
->setAutowired (FALSE )
251
259
->setClass ('Nextras\Migrations\Entities\Group ' )
252
260
->addSetup ('$name ' , [$ groupName ])
@@ -265,13 +273,13 @@ private function createExtensionHandlerDefinitions($driver, $phpParams)
265
273
$ builder = $ this ->getContainerBuilder ();
266
274
267
275
$ sqlHandler = $ builder ->addDefinition ($ this ->prefix ('extensionHandler.sql ' ))
268
- ->addTag (self ::TAG_EXTENSION_HANDLER , ' sql ' )
276
+ ->addTag (self ::TAG_EXTENSION_HANDLER , [ ' for ' => [ $ this -> name ], ' extension ' => ' sql '] )
269
277
->setAutowired (FALSE )
270
278
->setClass ('Nextras\Migrations\Extensions\SqlHandler ' )
271
279
->setArguments ([$ driver ]);
272
280
273
281
$ phpHandler = $ builder ->addDefinition ($ this ->prefix ('extensionHandler.php ' ))
274
- ->addTag (self ::TAG_EXTENSION_HANDLER , ' php ' )
282
+ ->addTag (self ::TAG_EXTENSION_HANDLER , [ ' for ' => [ $ this -> name ], ' extension ' => ' php '] )
275
283
->setClass ('Nextras\Migrations\Extensions\PhpHandler ' )
276
284
->setAutowired (FALSE )
277
285
->setArguments ([$ phpParams ]);
0 commit comments