Passed
Push — test ( 2ca121...28607d )
by Tom
03:10
created

RunnerOptions::parseDockerClient()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 12
c 0
b 0
f 0
nc 3
nop 1
dl 0
loc 18
ccs 11
cts 11
cp 1
crap 3
rs 9.8666
1
<?php
2
3
/* this file is part of pipelines */
4
5
namespace Ktomk\Pipelines\Utility;
6
7
use Ktomk\Pipelines\Cli\Args;
8
use Ktomk\Pipelines\Cli\ArgsException;
9
use Ktomk\Pipelines\Runner\RunOpts;
10
11
/**
12
 * aggregated args parser for RunOpts / runner options
13
 *
14
 * @package Ktomk\Pipelines\Utility\Args
15
 */
16
class RunnerOptions
17
{
18
    /**
19
     * @var Args
20
     */
21
    private $args;
22
23
    /**
24
     * @param Args $args
25
     * @return RunnerOptions
26
     */
27 2
    public static function bind(Args $args)
28
    {
29 2
        return new self($args);
30
    }
31
32
    /**
33
     * @param Args $args
34
     */
35 2
    public function __construct(Args $args)
36
    {
37 2
        $this->args = $args;
38 2
    }
39
40
    /**
41
     * @throws ArgsException
42
     * @return RunOpts
43
     */
44 2
    public function run()
45
    {
46 2
        $runOpts = RunOpts::create();
47 2
        $this->parse($this->args, $runOpts);
48
49 1
        return $runOpts;
50
    }
51
52
    /**
53
     * Parse keep arguments
54
     *
55
     * @param Args $args
56
     * @param RunOpts $runOpts
57
     * @throws ArgsException
58
     */
59 2
    public function parse(Args $args, RunOpts $runOpts)
60
    {
61 2
        $runOpts->setPrefix($this->parsePrefix($args));
62 1
    }
63
64
    /**
65
     * @param Args $args
66
     * @throws ArgsException
67
     * @return string
68
     */
69 2
    private function parsePrefix(Args $args)
70
    {
71 2
        $prefix = $args->getOptionArgument('prefix', App::UTILITY_NAME);
72 2
        if (!preg_match('~^[a-z]{3,}$~', $prefix)) {
73 1
            ArgsException::__(sprintf("invalid prefix: '%s'", $prefix));
74
        }
75
76 1
        return $prefix;
77
    }
78
}
79