Passed
Push — master ( f89447...b1210f )
by Timm
01:47
created

HelpRunner::displayUsage()   A

Complexity

Conditions 4
Paths 1

Size

Total Lines 21
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 13
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 21
ccs 13
cts 13
cp 1
crap 4
rs 9.8333
1
<?php
2
3
4
namespace Stefaminator\Cli;
5
6
7
class HelpRunner extends CmdRunner {
8
9
10 1
    public function run(): void {
11 1
        $this->displayHeader();
12 1
        $this->displayUsage();
13 1
        $this->displayOptions();
14 1
        $this->displaySubcommands();
15 1
    }
16
17 1
    public function displayHeader(): void {
18
19
20
        $help = <<<EOT
21
22
              o       
23
           ` /_\ '    
24
          - (o o) -   
25
----------ooO--(_)--Ooo----------
26
          Need help?
27
---------------------------------  
28
EOT;
29
30 1
        App::echo($help, Color::FOREGROUND_COLOR_YELLOW);
31
32 1
        App::eol();
33 1
    }
34
35 1
    public function displayUsage(): void {
36
37 1
        $cmd = $this->cmd();
38
39 1
        $oc = $cmd->getOptionCollection();
40 1
        $has_options = !empty($oc->options);
41
42 1
        $has_subcommands = !empty($cmd->subcommands);
43
44 1
        App::eol();
45 1
        App::echo('Usage: ', Color::FOREGROUND_COLOR_YELLOW);
46 1
        App::eol();
47
48 1
        App::echo(
49
            '  ' .
50 1
            ($cmd->parent !== null ? $cmd->cmd : 'command') .
51 1
            ($has_options ? ' [options]' : '') .
52 1
            ($has_subcommands ? ' [command]' : '')
53
        );
54
55 1
        App::eol();
56 1
    }
57
58 1
    public function displayOptions(): void {
59
60 1
        $cmd = $this->cmd();
61
62 1
        $oc = $cmd->getOptionCollection();
63 1
        $has_options = !empty($oc->options);
64
65 1
        if ($has_options) {
66
67 1
            App::eol();
68 1
            App::echo('Options: ', Color::FOREGROUND_COLOR_YELLOW);
69 1
            App::eol();
70
71 1
            foreach ($oc->options as $option) {
72
73 1
                $s = '    ';
74 1
                if(!empty($option->short)) {
75 1
                    $s = '-' . $option->short . ', ';
76
                }
77 1
                $s .= '--' . $option->long;
78
79 1
                $s = '  ' . str_pad($s, 20, ' ');
80 1
                App::echo($s, Color::FOREGROUND_COLOR_GREEN);
81
82 1
                $s = ' ' . $option->desc;
83 1
                App::echo($s);
84
85 1
                if ($option->defaultValue) {
86
                    $s = ' [default: ' . $option->defaultValue . ']';
87
                    App::echo($s, Color::FOREGROUND_COLOR_YELLOW);
88
                }
89
90 1
                App::eol();
91
            }
92
93 1
            App::eol();
94
        }
95
96 1
    }
97
98 1
    public function displaySubcommands(): void {
99
100 1
        $cmd = $this->cmd();
101
102 1
        $has_subcommands = !empty($cmd->subcommands);
103
104 1
        if($has_subcommands) {
105
106 1
            App::eol();
107 1
            App::echo('Available commands: ', Color::FOREGROUND_COLOR_YELLOW);
108 1
            App::eol();
109
110 1
            foreach ($cmd->subcommands as $_cmd) {
111
112 1
                $s = '  ' . str_pad($_cmd->cmd, 20, ' ');
113 1
                App::echo($s, Color::FOREGROUND_COLOR_GREEN);
114
115 1
                $s = ' ' . $_cmd->descr;
116 1
                App::echo($s);
117
118 1
                App::eol();
119
            }
120
121 1
            App::eol();
122
        }
123 1
    }
124
125
}