PhpCsFixerConfigurator::configure()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 29

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 29
rs 9.456
c 0
b 0
f 0
ccs 18
cts 18
cp 1
cc 3
nc 3
nop 2
crap 3
1
<?php
2
3
namespace PhpGitHooks\Module\Configuration\Service;
4
5
use Composer\IO\IOInterface;
6
use PhpGitHooks\Module\Configuration\Domain\Enabled;
7
use PhpGitHooks\Module\Configuration\Domain\Level;
8
use PhpGitHooks\Module\Configuration\Domain\PhpCsFixer;
9
use PhpGitHooks\Module\Configuration\Domain\PhpCsFixerLevels;
10
use PhpGitHooks\Module\Configuration\Domain\PhpCsFixerOptions;
11
12
class PhpCsFixerConfigurator
13
{
14
    /**
15
     * @param IOInterface $io
16
     * @param PhpCsFixer  $phpCsFixer
17
     *
18
     * @return PhpCsFixer
19
     */
20 2
    public static function configure(IOInterface $io, PhpCsFixer $phpCsFixer)
21
    {
22 2
        if (true === $phpCsFixer->isUndefined()) {
23 1
            $answer = $io->ask(HookQuestions::PHPCSFIXER_TOOL, HookQuestions::DEFAULT_TOOL_ANSWER);
24
25
            $phpCsFixer = $phpCsFixer
26 1
                ->setEnabled(new Enabled(HookQuestions::DEFAULT_TOOL_ANSWER === strtoupper($answer)));
27
28 1
            if (true === $phpCsFixer->isEnabled()) {
29 1
                $psr0Answer = $io->ask(HookQuestions::PHPCSFIXER_PSR0_LEVEL, HookQuestions::DEFAULT_TOOL_ANSWER);
30 1
                $psr1Answer = $io->ask(HookQuestions::PHPCSFIXER_PSR1_LEVEL, HookQuestions::DEFAULT_TOOL_ANSWER);
31 1
                $psr2Answer = $io->ask(HookQuestions::PHPCSFIXER_PSR2_LEVEL, HookQuestions::DEFAULT_TOOL_ANSWER);
32 1
                $symfonyAnswer = $io->ask(HookQuestions::PHPCSFIXER_SYMFONY_LEVEL, HookQuestions::DEFAULT_TOOL_ANSWER);
33
34 1
                $phpCsFixer = $phpCsFixer->addLevels(new PhpCsFixerLevels(
35 1
                    new Level(HookQuestions::DEFAULT_TOOL_ANSWER ===  strtoupper($psr0Answer)),
36 1
                    new Level(HookQuestions::DEFAULT_TOOL_ANSWER ===  strtoupper($psr1Answer)),
37 1
                    new Level(HookQuestions::DEFAULT_TOOL_ANSWER ===  strtoupper($psr2Answer)),
38 1
                    new Level(HookQuestions::DEFAULT_TOOL_ANSWER ===  strtoupper($symfonyAnswer))
39
                ));
40
            }
41
42 1
            $optionsAnswer = $io->ask(HookQuestions::PHPCSFIXER_OPTIONS, null);
43 1
            $options = new PhpCsFixerOptions($optionsAnswer);
44 1
            $phpCsFixer = $phpCsFixer->setOptions($options);
45
        }
46
47 2
        return $phpCsFixer;
48
    }
49
}
50