Skip to content

Commit 0536dd4

Browse files
committed
[Toolkit] Fix UXToolkitBundle name, refactor DependencyInjection/* in UXToolkitBundle,
1 parent 474d59e commit 0536dd4

16 files changed

+181
-218
lines changed

src/Toolkit/config/services.php

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
13+
14+
/*
15+
* @author Hugo Alliaume <[email protected]>
16+
*/
17+
18+
use Symfony\UX\Toolkit\Command\BuildRegistryCommand;
19+
use Symfony\UX\Toolkit\Command\DebugUxToolkitCommand;
20+
use Symfony\UX\Toolkit\Command\UxToolkitInstallCommand;
21+
use Symfony\UX\Toolkit\Compiler\RegistryCompiler;
22+
use Symfony\UX\Toolkit\Compiler\TwigComponentCompiler;
23+
use Symfony\UX\Toolkit\ComponentRepository\CurrentTheme;
24+
use Symfony\UX\Toolkit\ComponentRepository\GithubRepository;
25+
use Symfony\UX\Toolkit\ComponentRepository\OfficialRepository;
26+
use Symfony\UX\Toolkit\ComponentRepository\RepositoryFactory;
27+
use Symfony\UX\Toolkit\ComponentRepository\RepositoryIdentifier;
28+
use Symfony\UX\Toolkit\Registry\DependenciesResolver;
29+
use Symfony\UX\Toolkit\Registry\RegistryFactory;
30+
31+
return static function (ContainerConfigurator $container): void {
32+
$container->services()
33+
->set('.ux_toolkit.compiler.registry_compiler', RegistryCompiler::class)
34+
->args([
35+
service('filesystem')
36+
])
37+
38+
->set('.ux_toolkit.compiler.twig_component_compiler', TwigComponentCompiler::class)
39+
->args([
40+
param('ux_toolkit.prefix'),
41+
service('.ux_toolkit.registry.dependencies_resolver'),
42+
service('filesystem'),
43+
])
44+
45+
->set('.ux_toolkit.component_repository.official_repository', OfficialRepository::class)
46+
->args([
47+
service('filesystem')
48+
])
49+
50+
->set('.ux_toolkit.component_repository.github_repository', GithubRepository::class)
51+
->args([
52+
service('filesystem'),
53+
service('http_client')->nullOnInvalid(),
54+
])
55+
56+
->set('.ux_toolkit.component_repository.repository_factory', RepositoryFactory::class)
57+
->args([
58+
service('.ux_toolkit.component_repository.official_repository'),
59+
service('.ux_toolkit.component_repository.github_repository'),
60+
])
61+
62+
->set('.ux_toolkit.component_repository.current_theme', CurrentTheme::class)
63+
->args([
64+
param('ux_toolkit.theme'),
65+
service('.ux_toolkit.component_repository.repository_factory'),
66+
service('.ux_toolkit.component_repository.repository_identifier'),
67+
])
68+
69+
->set('.ux_toolkit.component_repository.repository_identifier', RepositoryIdentifier::class)
70+
71+
->set('.ux_toolkit.registry.dependencies_resolver', DependenciesResolver::class)
72+
73+
->set('.ux_toolkit.registry.registry_factory', RegistryFactory::class)
74+
75+
->set('.ux_toolkit.command.build_registry', BuildRegistryCommand::class)
76+
->args([
77+
service('.ux_toolkit.compiler.registry_compiler')
78+
])
79+
->tag('console.command')
80+
81+
->set('.ux_toolkit.command.install', UxToolkitInstallCommand::class)
82+
->args([
83+
service('.ux_toolkit.component_repository.current_theme'),
84+
service('.ux_toolkit.registry.registry_factory'),
85+
service('.ux_toolkit.compiler.twig_component_compiler'),
86+
])
87+
->tag('console.command')
88+
89+
->set('.ux_toolkit.command.debug', DebugUxToolkitCommand::class)
90+
->args([
91+
service('.ux_toolkit.component_repository.current_theme'),
92+
service('.ux_toolkit.registry.registry_factory'),
93+
])
94+
->tag('console.command')
95+
;
96+
};

src/Toolkit/src/Compiler/RegistryCompiler.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
*
2424
* @internal
2525
*/
26-
final class RegistryCompiler
26+
final readonly class RegistryCompiler
2727
{
2828
public function __construct(
29-
private readonly Filesystem $filesystem,
29+
private Filesystem $filesystem,
3030
) {
3131
}
3232

src/Toolkit/src/Compiler/TwigComponentCompiler.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@
2323
*
2424
* @internal
2525
*/
26-
final class TwigComponentCompiler
26+
final readonly class TwigComponentCompiler
2727
{
2828
public function __construct(
29-
private readonly ?string $prefix,
30-
private readonly DependenciesResolver $dependenciesResolver,
29+
private ?string $prefix,
30+
private DependenciesResolver $dependenciesResolver,
31+
private Filesystem $filesystem,
3132
) {
3233
}
3334

@@ -40,9 +41,8 @@ public function compile(
4041
// resolve dependencies (avoid circular dependencies)
4142
$this->dependenciesResolver->resolve($registry);
4243

43-
$filesystem = new Filesystem();
44-
if (!$filesystem->exists($directory)) {
45-
$filesystem->mkdir($directory);
44+
if (!$this->filesystem->exists($directory)) {
45+
$this->filesystem->mkdir($directory);
4646
}
4747

4848
// We need to install all children components of each parent component
@@ -59,11 +59,11 @@ public function compile(
5959
$componentsToInstall = array_merge([$item->name], $componentsToInstall);
6060

6161
foreach ($componentsToInstall as $componentName) {
62-
$this->installComponent($registry->get($componentName), $directory, $filesystem, $overwrite);
62+
$this->installComponent($registry->get($componentName), $directory, $overwrite);
6363
}
6464
}
6565

66-
private function installComponent(RegistryItem $item, string $directory, Filesystem $filesystem, bool $overwrite): void
66+
private function installComponent(RegistryItem $item, string $directory, bool $overwrite): void
6767
{
6868
if (RegistryItemType::Component !== $item->type) {
6969
return;
@@ -75,10 +75,10 @@ private function installComponent(RegistryItem $item, string $directory, Filesys
7575
$item->name.'.html.twig',
7676
]);
7777

78-
if ($filesystem->exists($filename) && !$overwrite) {
78+
if ($this->filesystem->exists($filename) && !$overwrite) {
7979
throw new TwigComponentAlreadyExist("The component '{$item->name}' already exists.", 0, null);
8080
}
8181

82-
$filesystem->dumpFile($filename, $item->code);
82+
$this->filesystem->dumpFile($filename, $item->code);
8383
}
8484
}

src/Toolkit/src/ComponentRepository/GithubRepository.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,18 @@
2121
*
2222
* @internal
2323
*/
24-
class GithubRepository implements ComponentRepository
24+
final readonly class GithubRepository implements ComponentRepository
2525
{
2626
public function __construct(
27-
private readonly Filesystem $filesystem,
28-
private readonly ?HttpClientInterface $httpClient = null,
27+
private Filesystem $filesystem,
28+
private ?HttpClientInterface $httpClient = null,
2929
) {
3030
if (!class_exists(HttpClient::class)) {
31-
throw new \LogicException('You must install "symfony/http-client" to use ux-toolkit with remote component. Try running "composer require symfony/http-client".');
31+
throw new \LogicException('You must install "symfony/http-client" to use the UX Toolkit with remote components. Try running "composer require symfony/http-client".');
3232
}
3333

3434
if (!class_exists(\ZipArchive::class)) {
35-
throw new \LogicException('You must have the Zip extension installed to use ux-toolkit with remote components.');
35+
throw new \LogicException('You must have the Zip extension installed to use UX Toolit with remote components.');
3636
}
3737
}
3838

src/Toolkit/src/ComponentRepository/OfficialRepository.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@
1919
*
2020
* @internal
2121
*/
22-
class OfficialRepository implements ComponentRepository
22+
final class OfficialRepository implements ComponentRepository
2323
{
24+
public function __construct(
25+
private Filesystem $filesystem,
26+
) {
27+
}
28+
2429
public function fetch(RepositoryIdentity $repository): Finder
2530
{
2631
$finder = new Finder();
27-
$fileystem = new Filesystem();
2832

29-
if (! $fileystem->exists(__DIR__.'/../../registry/'.$repository->getPackage())) {
33+
if (!$this->filesystem->exists(__DIR__.'/../../registry/'.$repository->getPackage())) {
3034
throw new \InvalidArgumentException('This theme does not exist.');
3135
}
3236

src/Toolkit/src/ComponentRepository/RepositoryFactory.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
*
1717
* @internal
1818
*/
19-
final class RepositoryFactory
19+
readonly final class RepositoryFactory
2020
{
2121
public function __construct(
22-
private readonly OfficialRepository $officialRepository,
23-
private readonly GithubRepository $githubRepository,
22+
private OfficialRepository $officialRepository,
23+
private GithubRepository $githubRepository,
2424
) {
2525
}
2626

src/Toolkit/src/ComponentRepository/RepositoryIdentifier.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*
1717
* @internal
1818
*/
19-
final class RepositoryIdentifier
19+
final readonly class RepositoryIdentifier
2020
{
2121
public function identify(string $name): RepositoryIdentity
2222
{

src/Toolkit/src/DependencyInjection/Configuration.php

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/Toolkit/src/DependencyInjection/ToolkitExtension.php

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/Toolkit/src/Registry/DependenciesResolver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*
1717
* @internal
1818
*/
19-
class DependenciesResolver
19+
final readonly class DependenciesResolver
2020
{
2121
public function resolve(Registry $registry): array
2222
{

0 commit comments

Comments
 (0)