Passed
Push — master ( bc3116...036c24 )
by Pol
02:16
created

ClassGenerator   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 44
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 44
ccs 16
cts 16
cp 1
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A regenerateClasses() 0 29 2
A __construct() 0 3 1
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
15
final class ClassGenerator
16
{
17
    /**
18
     * @var Event
19
     */
20
    private $event;
21
22 3
    public function __construct(Event $event)
23
    {
24 3
        $this->event = $event;
25 3
    }
26
27
    /**
28
     * @throws \ReflectionException
29
     */
30 2
    public function regenerateClasses(): void
31
    {
32
        $data = [
33 2
            Packages::class,
34
            Types::class,
35
            Directories::class,
36
            Versions::class,
37
            Dependencies::class,
38
        ];
39
40 2
        foreach ($data as $class) {
41 2
            $reflection = new \ReflectionClass($class);
42
43 2
            $template = \sprintf(
44 2
                '%s.twig',
45 2
                \mb_strtolower($reflection->getShortName())
46
            );
47
48 2
            $installPath = \sprintf(
49 2
                '%s/../build/%s.php',
50 2
                __DIR__,
51 2
                $reflection->getShortName()
52
            );
53
54
            /** @var ExporterInterface $exporter */
55 2
            $exporter = $reflection->newInstance($this->event);
56
57
            $exporter
58 2
                ->exportToFile($template, $installPath);
59
        }
60 2
    }
61
}
62