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 */
@@ -123,13 +126,18 @@ public function beforeCompile()
123
126
124
127
// configuration
125
128
$ groups = [];
126
- foreach ($ builder ->findByTag (self ::TAG_GROUP ) as $ serviceName => $ _ ) {
127
- $ groups [] = $ builder ->getDefinition ($ serviceName );
129
+ foreach ($ builder ->findByTag (self ::TAG_GROUP ) as $ serviceName => $ tagAttributes ) {
130
+ if (!isset ($ tagAttributes ['for ' ]) || in_array ($ this ->name , $ tagAttributes ['for ' ], true )) {
131
+ $ groups [] = $ builder ->getDefinition ($ serviceName );
132
+ }
128
133
}
129
134
130
135
$ extensionHandlers = [];
131
- foreach ($ builder ->findByTag (self ::TAG_EXTENSION_HANDLER ) as $ serviceName => $ extensionName ) {
132
- $ extensionHandlers [$ extensionName ] = $ builder ->getDefinition ($ serviceName );
136
+ foreach ($ builder ->findByTag (self ::TAG_EXTENSION_HANDLER ) as $ serviceName => $ tagAttributes ) {
137
+ if (!isset ($ tagAttributes ['for ' ]) || in_array ($ this ->name , $ tagAttributes ['for ' ], true )) {
138
+ $ extensionName = is_string ($ tagAttributes ) ? $ tagAttributes : $ tagAttributes ['extension ' ];
139
+ $ extensionHandlers [$ extensionName ] = $ builder ->getDefinition ($ serviceName );
140
+ }
133
141
}
134
142
135
143
$ builder ->getDefinition ($ this ->prefix ('configuration ' ))
@@ -247,7 +255,7 @@ private function createGroupDefinitions(array $groups)
247
255
248
256
$ serviceName = lcfirst (str_replace ('- ' , '' , ucwords ($ groupName , '- ' )));
249
257
$ groupDefinitions [] = $ builder ->addDefinition ($ this ->prefix ("group. $ serviceName " ))
250
- ->addTag (self ::TAG_GROUP )
258
+ ->addTag (self ::TAG_GROUP , [ ' for ' => [ $ this -> name ]] )
251
259
->setAutowired (FALSE )
252
260
->setClass ('Nextras\Migrations\Entities\Group ' )
253
261
->addSetup ('$name ' , [$ groupName ])
@@ -266,13 +274,13 @@ private function createExtensionHandlerDefinitions($driver, $phpParams)
266
274
$ builder = $ this ->getContainerBuilder ();
267
275
268
276
$ sqlHandler = $ builder ->addDefinition ($ this ->prefix ('extensionHandler.sql ' ))
269
- ->addTag (self ::TAG_EXTENSION_HANDLER , ' sql ' )
277
+ ->addTag (self ::TAG_EXTENSION_HANDLER , [ ' for ' => [ $ this -> name ], ' extension ' => ' sql '] )
270
278
->setAutowired (FALSE )
271
279
->setClass ('Nextras\Migrations\Extensions\SqlHandler ' )
272
280
->setArguments ([$ driver ]);
273
281
274
282
$ phpHandler = $ builder ->addDefinition ($ this ->prefix ('extensionHandler.php ' ))
275
- ->addTag (self ::TAG_EXTENSION_HANDLER , ' php ' )
283
+ ->addTag (self ::TAG_EXTENSION_HANDLER , [ ' for ' => [ $ this -> name ], ' extension ' => ' php '] )
276
284
->setClass ('Nextras\Migrations\Extensions\PhpHandler ' )
277
285
->setAutowired (FALSE )
278
286
->setArguments ([$ phpParams ]);
0 commit comments