Skip to content
This repository was archived by the owner on Dec 9, 2023. It is now read-only.

Commit a991ac9

Browse files
fixed public directory of web server and assets install when configured in composer.json
1 parent d59e1be commit a991ac9

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

DependencyInjection/WebServerExtension.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,31 @@ public function load(array $configs, ContainerBuilder $container)
2727
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
2828
$loader->load('webserver.xml');
2929

30+
$publicDirectory = $this->getPublicDirectory($container);
31+
$container->getDefinition('web_server.command.server_run')->replaceArgument(0, $publicDirectory);
32+
$container->getDefinition('web_server.command.server_start')->replaceArgument(0, $publicDirectory);
33+
3034
if (!class_exists(ConsoleFormatter::class)) {
3135
$container->removeDefinition('web_server.command.server_log');
3236
}
3337
}
38+
39+
private function getPublicDirectory(ContainerBuilder $container)
40+
{
41+
$kernelProjectDir = $container->getParameter('kernel.project_dir');
42+
$publicDir = 'public';
43+
$composerFilePath = $kernelProjectDir.'/composer.json';
44+
45+
if (!file_exists($composerFilePath)) {
46+
return $kernelProjectDir.'/'.$publicDir;
47+
}
48+
49+
$composerConfig = json_decode(file_get_contents($composerFilePath), true);
50+
51+
if (isset($composerConfig['extra']['public-dir'])) {
52+
$publicDir = $composerConfig['extra']['public-dir'];
53+
}
54+
55+
return $kernelProjectDir.'/'.$publicDir;
56+
}
3457
}

Tests/DependencyInjection/WebServerExtensionTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,17 @@ class WebServerExtensionTest extends TestCase
2121
public function testLoad()
2222
{
2323
$container = new ContainerBuilder();
24+
$container->setParameter('kernel.project_dir', __DIR__);
2425
(new WebServerExtension())->load(array(), $container);
2526

27+
$this->assertSame(
28+
__DIR__.'/test',
29+
$container->getDefinition('web_server.command.server_run')->getArgument(0)
30+
);
31+
$this->assertSame(
32+
__DIR__.'/test',
33+
$container->getDefinition('web_server.command.server_start')->getArgument(0)
34+
);
2635
$this->assertTrue($container->hasDefinition('web_server.command.server_run'));
2736
$this->assertTrue($container->hasDefinition('web_server.command.server_start'));
2837
$this->assertTrue($container->hasDefinition('web_server.command.server_stop'));
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"name": "test-composer.json",
3+
"extra": {
4+
"public-dir": "test"
5+
}
6+
}

0 commit comments

Comments
 (0)