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

Skip to content

Commit cc2d512

Browse files
committed
[Asset] Add tag assets.package to register asset packages
Autoconfiguration with PackageInterface
1 parent 559ebe3 commit cc2d512

File tree

9 files changed

+27
-16
lines changed

9 files changed

+27
-16
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ CHANGELOG
1414
* added `assertCheckboxChecked()` and `assertCheckboxNotChecked()` in `WebTestCase`
1515
* added `assertFormValue()` and `assertNoFormValue()` in `WebTestCase`
1616
* Added "--as-tree=3" option to `translation:update` command to dump messages as a tree-like structure. The given value defines the level where to switch to inline YAML
17+
* Added tag `assets.package` to register asset packages
1718

1819
5.1.0
1920
-----

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
@@ -445,6 +445,8 @@ public function load(array $configs, ContainerBuilder $container)
445445
$loader->load('mime_type.php');
446446
}
447447

448+
$container->registerForAutoconfiguration(PackageInterface::class)
449+
->addTag('assets.package');
448450
$container->registerForAutoconfiguration(Command::class)
449451
->addTag('console.command');
450452
$container->registerForAutoconfiguration(ResourceCheckerInterface::class)
@@ -1057,7 +1059,6 @@ private function registerAssetsConfiguration(array $config, ContainerBuilder $co
10571059
$defaultPackage = $this->createPackageDefinition($config['base_path'], $config['base_urls'], $defaultVersion);
10581060
$container->setDefinition('assets._default_package', $defaultPackage);
10591061

1060-
$namedPackages = [];
10611062
foreach ($config['packages'] as $name => $package) {
10621063
if (null !== $package['version_strategy']) {
10631064
$version = new Reference($package['version_strategy']);
@@ -1071,15 +1072,11 @@ private function registerAssetsConfiguration(array $config, ContainerBuilder $co
10711072
$version = $this->createVersion($container, $version, $format, $package['json_manifest_path'], $name);
10721073
}
10731074

1074-
$container->setDefinition('assets._package_'.$name, $this->createPackageDefinition($package['base_path'], $package['base_urls'], $version));
1075+
$packageDefinition = $this->createPackageDefinition($package['base_path'], $package['base_urls'], $version)
1076+
->addTag('assets.package', ['package' => $name]);
1077+
$container->setDefinition('assets._package_'.$name, $packageDefinition);
10751078
$container->registerAliasForArgument('assets._package_'.$name, PackageInterface::class, $name.'.package');
1076-
$namedPackages[$name] = new Reference('assets._package_'.$name);
10771079
}
1078-
1079-
$container->getDefinition('assets.packages')
1080-
->replaceArgument(0, new Reference('assets._default_package'))
1081-
->replaceArgument(1, $namedPackages)
1082-
;
10831080
}
10841081

10851082
/**

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', 'getDefaultName'),
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
@@ -578,8 +578,13 @@ public function testAssets()
578578
$this->assertUrlPackage($container, $defaultPackage, ['http://cdn.example.com'], 'SomeVersionScheme', '%%s?version=%%s');
579579

580580
// packages
581-
$packages = $packages->getArgument(1);
582-
$this->assertCount(7, $packages);
581+
$packageTags = $container->findTaggedServiceIds('assets.package');
582+
$this->assertCount(7, $packageTags);
583+
584+
$packages = [];
585+
foreach ($packageTags as $serviceId => $tagAttributes) {
586+
$packages[$tagAttributes[0]['package']] = $serviceId;
587+
}
583588

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

src/Symfony/Bundle/FrameworkBundle/composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"require-dev": {
3535
"doctrine/annotations": "~1.7",
3636
"doctrine/cache": "~1.0",
37-
"symfony/asset": "^5.1",
37+
"symfony/asset": "^5.2",
3838
"symfony/browser-kit": "^4.4|^5.0",
3939
"symfony/console": "^5.2",
4040
"symfony/css-selector": "^4.4|^5.0",
@@ -71,7 +71,7 @@
7171
"phpdocumentor/reflection-docblock": "<3.0",
7272
"phpdocumentor/type-resolver": "<0.2.1",
7373
"phpunit/phpunit": "<5.4.3",
74-
"symfony/asset": "<5.1",
74+
"symfony/asset": "<5.2",
7575
"symfony/browser-kit": "<4.4",
7676
"symfony/console": "<5.2",
7777
"symfony/dotenv": "<5.1",

src/Symfony/Component/Asset/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
5.2.0
5+
-----
6+
7+
* the `Packages` constructor accepts any iterable.
8+
49
5.1.0
510
-----
611

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
@@ -48,7 +48,7 @@ public function testGetUrl()
4848
{
4949
$packages = new Packages(
5050
new Package(new StaticVersionStrategy('default')),
51-
['a' => new Package(new StaticVersionStrategy('a'))]
51+
new \ArrayIterator(['a' => new Package(new StaticVersionStrategy('a'))])
5252
);
5353

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

0 commit comments

Comments
 (0)
0