Completed
Push — master ( 6b9854...b5df5f )
by Guillaume
02:20
created

AbstractGenerator::setKernel()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
3
namespace Starkerxp\StructureBundle\Generator;
4
5
use Sensio\Bundle\GeneratorBundle\Generator\Generator;
6
use Symfony\Component\HttpKernel\Bundle\Bundle;
7
use Symfony\Component\HttpKernel\KernelInterface;
8
use Symfony\Component\Yaml\Yaml;
9
10
abstract class AbstractGenerator extends Generator
11
{
12
    /**
13
     * @var KernelInterface
14
     */
15
    protected $kernel;
16
17
    /**
18
     * AbstractGenerator constructor.
19
     * @param KernelInterface $kernel
20
     */
21
    public function __construct(KernelInterface $kernel)
22
    {
23
        $this->kernel = $kernel;
24
    }
25
26
    public abstract function getFichiers();
0 ignored issues
show
Coding Style introduced by
The abstract declaration must precede the visibility declaration
Loading history...
27
28
    public function traiterLeFichier($fichier, $target, $parameters)
29
    {
30
        if (file_exists($target) && explode('.', basename($target))[1] == 'yml') {
31
            $currentServices = Yaml::parse(file_get_contents($target));
32
            $newServices = Yaml::parse($this->render($fichier.'.twig', $parameters));
33
            // gestion de fichiers sans services ni parameters => routing
34
            $listeDesParametres = !empty($currentServices['parameters'])?array_keys($currentServices['parameters']):[];
35
            $listeDesServices = !empty($currentServices['services'])?array_keys($currentServices['services']):[];
36
            $listeDesDeclarations = !empty($currentServices)?array_keys($currentServices):[];
37
            $listeDesNouveauxParametres = !empty($newServices['parameters'])?array_keys($newServices['parameters']):[];
38
            $listeDesNouveauxServices = !empty($newServices['services'])?array_keys($newServices['services']):[];
39
            $listeDesNouvellesDeclarations = !empty($newServices)?array_keys($newServices):[];
40
41
            $diffServices = array_diff($listeDesNouveauxServices, $listeDesServices);
42
            $diffParametres = array_diff($listeDesNouveauxParametres, $listeDesParametres);
43
            $diffDeclarations = array_diff($listeDesNouvellesDeclarations, $listeDesDeclarations);
44
            if(empty($diffServices) && empty($diffParametres)  && empty($diffDeclarations) ){
45
                return false;
46
            }
47
            foreach ($diffServices as $libelle){
48
                $currentServices['services'][$libelle] = $newServices['services'][$libelle];
49
            }
50
            foreach ($diffParametres as $libelle){
51
                $currentServices['parameters'][$libelle] = $newServices['parameters'][$libelle];
52
            }
53
            foreach ($diffDeclarations as $libelle){
54
                $currentServices[$libelle] = $newServices[$libelle];
55
            }
56
            $content = Yaml::dump($currentServices, 3, 4);
57
            $flink = fopen($target, 'w');
58
            if ($flink) {
59
                $write = fwrite($flink, $content);
60
                if ($write) {
61
                    fclose($flink);
62
                }
63
            }
64
            return true;
65
        }
66
        // On ne modifie pas un fichier existant.
67
        if(file_exists($target)){
68
            return false;
69
        }
70
        $this->renderFile($fichier.'.twig', $target, $parameters);
71
        return true;
72
    }
73
74
    /**
75
     * @param KernelInterface $kernel
76
     * @return AbstractGenerator
77
     */
78
    public function setKernel(KernelInterface $kernel)
79
    {
80
        $this->kernel = $kernel;
81
82
        return $this;
83
    }
84
85
86
}
0 ignored issues
show
Coding Style introduced by
As per coding style, files should not end with a newline character.

This check marks files that end in a newline character, i.e. an empy line.

Loading history...
87