ClassGenerator::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 0
cp 0
crap 2
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace drupol\ComposerPackages;
6
7
use Composer\Script\Event;
8
use drupol\ComposerPackages\Exporter\Dependencies;
9
use drupol\ComposerPackages\Exporter\Directories;
10
use drupol\ComposerPackages\Exporter\ExporterInterface;
11
use drupol\ComposerPackages\Exporter\Packages;
12
use drupol\ComposerPackages\Exporter\Types;
13
use drupol\ComposerPackages\Exporter\Versions;
14
use ReflectionClass;
15
use ReflectionException;
16
17
final class ClassGenerator
18
{
19
    private Event $event;
20
21
    public function __construct(Event $event)
22
    {
23
        $this->event = $event;
24 3
    }
25
26 3
    /**
27 3
     * @throws ReflectionException
28
     */
29
    public function regenerateClasses(): void
30
    {
31
        $data = [
32 2
            Packages::class,
33
            Types::class,
34
            Directories::class,
35 2
            Versions::class,
36
            Dependencies::class,
37
        ];
38
39
        foreach ($data as $class) {
40
            $reflection = new ReflectionClass($class);
41
42 2
            $template = sprintf(
43 2
                '%s.twig',
44
                strtolower($reflection->getShortName())
45 2
            );
46 2
47 2
            $installPath = sprintf(
48
                '%s/../build/%s.php',
49
                __DIR__,
50 2
                $reflection->getShortName()
51 2
            );
52 2
53 2
            /** @var ExporterInterface $exporter */
54
            $exporter = $reflection->newInstance($this->event);
55
56
            $exporter
57 2
                ->exportToFile($template, $installPath);
58
        }
59
    }
60
}
61