Passed
Push — master ( 738022...b95edc )
by Timm
01:55
created

anonymous//examples/cli-app-params.php$0   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 20
dl 0
loc 28
rs 10
c 1
b 0
f 0
wmc 3

1 Method

Rating   Name   Duplication   Size   Complexity  
A cli-app-params.php$0 ➔ setup() 0 26 3
1
#!/usr/bin/php
2
<?php
3
4
require __DIR__ . '/../vendor/autoload.php';
5
6
use Stefaminator\Cli\App;
7
use Stefaminator\Cli\AppParser;
8
use Stefaminator\Cli\Cmd;
9
use Stefaminator\Cli\Color;
10
11
AppParser::run(
12
    (new class extends App {
13
14
        public function setup(): Cmd {
15
            return Cmd::root()
16
                ->addParam('v|verbose', [
17
                    'description' => 'Flag to enable verbose output'
18
                ])
19
                ->addParam('n|name:', [
20
                    'description' => 'Name parameter. This param requires a value.',
21
                    'isa' => 'string',
22
                    'default' => 'World'
23
                ])
24
                ->setCallable(static function (Cmd $cmd) {
25
26
                    $name = $cmd->options->get('name');
27
28
                    self::eol();
29
                    self::echo(sprintf('Hello %s', $name), Color::FOREGROUND_COLOR_YELLOW);
30
                    self::eol();
31
32
                    if($cmd->options->has('verbose')) {
33
                        $keys = array_keys($cmd->options->keys);
34
                        self::eol();
35
                        self::echo('All option params...', Color::FOREGROUND_COLOR_GREEN);
36
                        foreach($keys as $k) {
37
                            self::echo(self::PADDING . $k . ': ' . $cmd->options->get($k), Color::FOREGROUND_COLOR_GREEN);
38
                        }
39
                        self::eol();
40
                    }
41
42
                });
43
        }
44
45
    })
46
);
47