Completed
Push — master ( 3a75ac...d68dc3 )
by Alejandro
23s
created

LanguageConfigCustomizer::chooseLanguage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
ccs 2
cts 2
cp 1
crap 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Shlinkio\Shlink\Installer\Config\Plugin;
5
6
use Shlinkio\Shlink\Installer\Model\CustomizableAppConfig;
7
use Symfony\Component\Console\Style\SymfonyStyle;
8
use function array_diff;
9
use function array_keys;
10
11
class LanguageConfigCustomizer implements ConfigCustomizerInterface
12
{
13
    public const DEFAULT_LANG = 'DEFAULT';
14
    public const CLI_LANG = 'CLI';
15
    private const EXPECTED_KEYS = [
16
        self::DEFAULT_LANG,
17
        self::CLI_LANG,
18
    ];
19
20
    private const SUPPORTED_LANGUAGES = ['en', 'es'];
21
22 3
    public function process(SymfonyStyle $io, CustomizableAppConfig $appConfig): void
23
    {
24 3
        $lang = $appConfig->getLanguage();
25 3
        $keysToAskFor = $appConfig->hasLanguage()
26 2
            ? array_diff(self::EXPECTED_KEYS, array_keys($lang))
27 3
            : self::EXPECTED_KEYS;
28
29 3
        if (empty($keysToAskFor)) {
30 1
            return;
31
        }
32
33 2
        $io->title('LANGUAGE');
34 2
        foreach ($keysToAskFor as $key) {
35 2
            $lang[$key] = $this->ask($io, $key);
36
        }
37 2
        $appConfig->setLanguage($lang);
38 2
    }
39
40 2
    private function ask(SymfonyStyle $io, string $key)
41
    {
42
        switch ($key) {
43 2
            case self::DEFAULT_LANG:
44 1
                return $this->chooseLanguage($io, 'Select default language for the application in general');
45 2
            case self::CLI_LANG:
46 2
                return $this->chooseLanguage($io, 'Select default language for CLI executions');
47
        }
48
49
        return '';
50
    }
51
52 2
    private function chooseLanguage(SymfonyStyle $io, string $message): string
53
    {
54 2
        return $io->choice($message, self::SUPPORTED_LANGUAGES, self::SUPPORTED_LANGUAGES[0]);
55
    }
56
}
57