Skip to content

Commit 8791f80

Browse files
committed
[Asset] Add tag assets.package to register asset packages
Autoconfiguration with PackageInterface
1 parent b0130c3 commit 8791f80

File tree

5 files changed

+18
-12
lines changed

5 files changed

+18
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ CHANGELOG
1111
* Added the `event_dispatcher.dispatcher` tag
1212
* Added `assertResponseFormatSame()` in `BrowserKitAssertionsTrait`
1313
* Add support for configuring UUID factory services
14+
* Add tag `assets.package` to register asset packages
1415

1516
5.2.0
1617
-----

DependencyInjection/Compiler/UnusedTagsPass.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class UnusedTagsPass implements CompilerPassInterface
2323
{
2424
private $knownTags = [
2525
'annotations.cached_reader',
26+
'assets.package',
2627
'auto_alias',
2728
'cache.pool',
2829
'cache.pool.clearer',

DependencyInjection/FrameworkExtension.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,8 @@ public function load(array $configs, ContainerBuilder $container)
471471
$loader->load('mime_type.php');
472472
}
473473

474+
$container->registerForAutoconfiguration(PackageInterface::class)
475+
->addTag('assets.package');
474476
$container->registerForAutoconfiguration(Command::class)
475477
->addTag('console.command');
476478
$container->registerForAutoconfiguration(ResourceCheckerInterface::class)
@@ -1095,7 +1097,6 @@ private function registerAssetsConfiguration(array $config, ContainerBuilder $co
10951097
$defaultPackage = $this->createPackageDefinition($config['base_path'], $config['base_urls'], $defaultVersion);
10961098
$container->setDefinition('assets._default_package', $defaultPackage);
10971099

1098-
$namedPackages = [];
10991100
foreach ($config['packages'] as $name => $package) {
11001101
if (null !== $package['version_strategy']) {
11011102
$version = new Reference($package['version_strategy']);
@@ -1109,15 +1110,11 @@ private function registerAssetsConfiguration(array $config, ContainerBuilder $co
11091110
$version = $this->createVersion($container, $version, $format, $package['json_manifest_path'], $name);
11101111
}
11111112

1112-
$container->setDefinition('assets._package_'.$name, $this->createPackageDefinition($package['base_path'], $package['base_urls'], $version));
1113+
$packageDefinition = $this->createPackageDefinition($package['base_path'], $package['base_urls'], $version)
1114+
->addTag('assets.package', ['package' => $name]);
1115+
$container->setDefinition('assets._package_'.$name, $packageDefinition);
11131116
$container->registerAliasForArgument('assets._package_'.$name, PackageInterface::class, $name.'.package');
1114-
$namedPackages[$name] = new Reference('assets._package_'.$name);
11151117
}
1116-
1117-
$container->getDefinition('assets.packages')
1118-
->replaceArgument(0, new Reference('assets._default_package'))
1119-
->replaceArgument(1, $namedPackages)
1120-
;
11211118
}
11221119

11231120
/**

Resources/config/assets.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
$container->services()
3131
->set('assets.packages', Packages::class)
3232
->args([
33-
service('assets.empty_package'),
34-
[],
33+
service('assets._default_package'),
34+
tagged_iterator('assets.package', 'package'),
3535
])
3636

3737
->alias(Packages::class, 'assets.packages')
@@ -41,6 +41,8 @@
4141
service('assets.empty_version_strategy'),
4242
])
4343

44+
->alias('assets._default_package', 'assets.empty_package')
45+
4446
->set('assets.context', RequestStackContext::class)
4547
->args([
4648
service('request_stack'),

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,8 +603,13 @@ public function testAssets()
603603
$this->assertUrlPackage($container, $defaultPackage, ['http://cdn.example.com'], 'SomeVersionScheme', '%%s?version=%%s');
604604

605605
// packages
606-
$packages = $packages->getArgument(1);
607-
$this->assertCount(9, $packages);
606+
$packageTags = $container->findTaggedServiceIds('assets.package');
607+
$this->assertCount(9, $packageTags);
608+
609+
$packages = [];
610+
foreach ($packageTags as $serviceId => $tagAttributes) {
611+
$packages[$tagAttributes[0]['package']] = $serviceId;
612+
}
608613

609614
$package = $container->getDefinition((string) $packages['images_path']);
610615
$this->assertPathPackage($container, $package, '/foo', 'SomeVersionScheme', '%%s?version=%%s');

0 commit comments

Comments
 (0)