Passed
Push — feature/create-console-bootstr... ( abaeda )
by Chema
04:15
created

provideModuleDependencies()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
ccs 0
cts 3
cp 0
crap 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Gacela\Console;
6
7
use Gacela\Console\Domain\FilenameSanitizer\FilenameSanitizer;
8
use Gacela\Console\Infrastructure\Command\MakeFileCommand;
9
use Gacela\Console\Infrastructure\Command\MakeModuleCommand;
10
use Gacela\Framework\AbstractDependencyProvider;
11
use Gacela\Framework\Container\Container;
12
13
/**
14
 * @method ConsoleConfig getConfig()
15
 */
16
final class ConsoleDependencyProvider extends AbstractDependencyProvider
17
{
18
    public const COMMANDS = 'COMMANDS';
19
20
    public const TEMPLATE_BY_FILENAME_MAP = 'TEMPLATE_FILENAME_MAP';
21
22
    public function provideModuleDependencies(Container $container): void
23
    {
24
        $this->addCommands($container);
25
        $this->addTemplateByFilenameMap($container);
26
    }
27
28
    private function addCommands(Container $container): void
29
    {
30
        $container->set(self::COMMANDS, static fn () => [
31
            new MakeFileCommand(),
32
            new MakeModuleCommand(),
33
        ]);
34
    }
35
36
    private function addTemplateByFilenameMap(Container $container): void
37
    {
38
        $codeTemplate = $this->getConfig();
39
40
        $container->set(self::TEMPLATE_BY_FILENAME_MAP, static fn () => [
41
            FilenameSanitizer::FACADE => $codeTemplate->getFacadeMakerTemplate(),
42
            FilenameSanitizer::FACTORY => $codeTemplate->getFactoryMakerTemplate(),
43
            FilenameSanitizer::CONFIG => $codeTemplate->getConfigMakerTemplate(),
44
            FilenameSanitizer::DEPENDENCY_PROVIDER => $codeTemplate->getDependencyProviderMakerTemplate(),
45
        ]);
46
    }
47
}
48