TraefikUsernameOptionProvider   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 54
rs 10
c 0
b 0
f 0
wmc 7

7 Methods

Rating   Name   Duplication   Size   Complexity  
A question() 0 5 1
A __construct() 0 3 1
A optionName() 0 3 1
A validate() 0 3 1
A helpMessage() 0 7 1
A option() 0 8 1
A onCorrectAnswer() 0 2 1
1
<?php declare(strict_types=1);
2
3
namespace Cocotte\Template\Traefik;
4
5
use Cocotte\Console\OptionProvider;
6
use Cocotte\Console\Style;
7
use Cocotte\Console\StyledInputOption;
8
use Cocotte\Environment\EnvironmentState;
9
use Symfony\Component\Console\Input\InputOption;
10
use Symfony\Component\Console\Question\Question;
11
12
class TraefikUsernameOptionProvider implements OptionProvider
13
{
14
    /**
15
     * @var Style
16
     */
17
    private $style;
18
19
    public function __construct(Style $style)
20
    {
21
        $this->style = $style;
22
    }
23
24
    public function option(EnvironmentState $environmentState): InputOption
25
    {
26
        return new StyledInputOption(
27
            $this->optionName(),
28
            null,
29
            InputOption::VALUE_REQUIRED,
30
            $this->helpMessage(),
31
            $environmentState->defaultValue(TraefikUsername::TRAEFIK_UI_USERNAME)
32
        );
33
    }
34
35
    public function helpMessage(): string
36
    {
37
        return $this->style->optionHelp(
38
            "Traefik UI username",
39
            [
40
                "Alphanumeric characters. ".
41
                "Must match ".TraefikUsername::REGEX,
42
            ]
43
        );
44
    }
45
46
    public function validate(string $value)
47
    {
48
        TraefikUsername::fromString($value);
49
    }
50
51
    public function optionName(): string
52
    {
53
        return TraefikUsername::OPTION_NAME;
54
    }
55
56
    public function question(): Question
57
    {
58
        return new Question(
59
            $this->style->quittableQuestion("Choose a <options=bold>username for your Traefik UI</>"),
60
            TraefikUsername::SUGGESTED_VALUE
61
        );
62
    }
63
64
    public function onCorrectAnswer(string $answer)
65
    {
66
        // do nothing
67
    }
68
69
}