8000 [Asset] Add tag assets.package to register asset packages · symfony/symfony@6217ff7 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6217ff7

Browse files
committed
[Asset] Add tag assets.package to register asset packages
Autoconfiguration with PackageInterface
1 parent f2f880a commit 6217ff7

File tree

7 files changed

+20
-14
lines changed

7 files changed

+20
-14
lines changed

src/Symfony/Bundle/FrameworkBundle/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
-----

src/Symfony/Bundle/FrameworkBundle/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',

src/Symfony/Bundle/FrameworkBundle/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
/**

src/Symfony/Bundle/FrameworkBundle/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'),

src/Symfony/Bundle/FrameworkBundle/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');

src/Symfony/Component/Asset/Packages.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Packages
2828
/**
2929
* @param PackageInterface[] $packages Additional packages indexed by name
3030
*/
31-
public function __construct(PackageInterface $defaultPackage = null, array $packages = [])
31+
public function __construct(PackageInterface $defaultPackage = null, iterable $packages = [])
3232
{
3333
$this->defaultPackage = $defaultPackage;
3434

src/Symfony/Component/Asset/Tests/PackagesTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function testGetUrl()
5151
{
5252
$packages = new Packages(
5353
new Package(new StaticVersionStrategy('default')),
54-
['a' => new Package(new StaticVersionStrategy('a'))]
54+
new \ArrayIterator(['a' => new Package(new StaticVersionStrategy('a'))])
5555
);
5656

5757
$this->assertSame('/foo?default', $packages->getUrl('/foo'));

0 commit comments

Comments
 (0)
0