Input::evn()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 1
c 1
b 0
f 1
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
/**
3
 * Input proxy (backend to ENV|ARGV)
4
 * User: moyo
5
 * Date: 22/12/2017
6
 * Time: 11:58 AM
7
 */
8
9
namespace Carno\Console;
10
11
use Symfony\Component\Console\Input\InputInterface;
12
13
class Input
14
{
15
    /**
16
     * @var InputInterface
17
     */
18
    private $backend = null;
19
20
    /**
21
     * Input constructor.
22
     * @param InputInterface $input
23
     */
24
    public function __construct(InputInterface $input)
25
    {
26
        $this->backend = $input;
27
    }
28
29
    /**
30
     * @param string $name
31
     * @return bool
32
     */
33
    public function hasOption(string $name) : bool
34
    {
35
        return (false !== getenv($this->evn($name))) ? true : $this->backend->hasOption($name);
36
    }
37
38
    /**
39
     * @param string $name
40
     * @return mixed
41
     */
42
    public function getOption(string $name)
43
    {
44
        return (false !== $got = getenv($this->evn($name))) ? $got : $this->backend->getOption($name);
45
    }
46
47
    /**
48
     * @param string $name
49
     * @param array $arguments
50
     * @return mixed
51
     */
52
    public function __call(string $name, array $arguments)
53
    {
54
        return $this->backend->$name(...$arguments);
55
    }
56
57
    /**
58
     * @return InputInterface
59
     */
60
    public function raw() : InputInterface
61
    {
62
        return $this->backend;
63
    }
64
65
    /**
66
     * @param string $avn
67
     * @return string
68
     */
69
    private function evn(string $avn) : string
70
    {
71
        return str_replace('-', '_', strtoupper($avn));
72
    }
73
}
74