Failed Conditions
Push — master ( 07197c...02c092 )
by Yo
02:21
created

NamespaceResolver::setNamespace()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 0
cts 6
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 3
nc 2
nop 3
crap 6
1
<?php
2
namespace Yoanm\InitPhpRepository\Resolver;
3
4
use Yoanm\InitPhpRepository\Command\RepositorySubType;
5
use Yoanm\InitPhpRepository\Command\RepositoryType;
6
use Yoanm\InitPhpRepository\Model\Template;
7
8
/**
9
 * Class NamespaceResolver
10
 */
11
class NamespaceResolver
12
{
13
    /** Repository type namespaces */
14
    const LIBRARY_NAMESPACE = 'library';
15
    const PROJECT_NAMESPACE = 'project';
16
17
    /** Repository sub type namespaces */
18
    const SYMFONY_LIBRARY_NAMESPACE = 'symfony-library';
19
20
    /**
21
     * @param Template[] $templateList
22
     * @param string     $repositoryType
23
     * @param string     $repositorySubType
24
     */
25
    public function resolve(array $templateList, $repositoryType, $repositorySubType)
26
    {
27
        // Update only templates that are not in base namespace
28
        if (RepositoryType::LIBRARY === $repositoryType) {
29
            $namespace = self::LIBRARY_NAMESPACE;
30
31
            $this->setNamespace($templateList, 'composer.config', $namespace);
32
            $this->setNamespace($templateList, 'git.gitignore', $namespace);
33
            $this->setNamespace($templateList, 'git.readme', $namespace);
34
35
            // Override with sub type
36
            if (RepositorySubType::SYMFONY === $repositorySubType) {
37
                $subNamespace = self::SYMFONY_LIBRARY_NAMESPACE;
38
39
                $this->setNamespace($templateList, 'ci.travis', $subNamespace);
40
                $this->setNamespace($templateList, 'git.readme', $subNamespace);
41
                $this->setNamespace($templateList, 'ci.scrutinizer', $subNamespace);
42
            }
43
        } else {
44
            $namespace = self::PROJECT_NAMESPACE;
45
46
            $this->setNamespace($templateList, 'composer.config', $namespace);
47
            $this->setNamespace($templateList, 'ci.scrutinizer', $namespace);
48
        }
49
    }
50
51
    /**
52
     * @param Template[] $templateList
53
     * @param string     $key
54
     * @param string     $namespace
55
     */
56
    protected function setNamespace(array $templateList, $key, $namespace)
57
    {
58
        if (isset($templateList[$key])) {
59
            $templateList[$key]->setNamespace($namespace);
60
        }
61
    }
62
}
63