ClassGenerator   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 21
c 1
b 0
f 0
dl 0
loc 41
ccs 15
cts 15
cp 1
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A regenerateClasses() 0 29 2
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