Completed
Push — develop ( 61d4f1...4b8b90 )
by
unknown
9s
created

AbstractCaller::getBinaryVersion()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3.0261

Importance

Changes 0
Metric Value
dl 0
loc 12
ccs 6
cts 7
cp 0.8571
rs 9.8666
c 0
b 0
f 0
cc 3
nc 3
nop 0
crap 3.0261
1
<?php
2
/**
3
 * GitElephant - An abstraction layer for git written in PHP
4
 * Copyright (C) 2013  Matteo Giachino
5
 *
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program.  If not, see [http://www.gnu.org/licenses/].
18
 */
19
20
namespace GitElephant\Command\Caller;
21
22
/**
23
 * AbstractCaller
24
 *
25
 * @author Tim Bernhard <[email protected]>
26
 */
27
abstract class AbstractCaller implements CallerInterface
28
{
29
    /**
30
     * Git binary path
31
     *
32
     * @var string
33
     */
34
    protected $binaryPath;
35
36
    /**
37
     * Git binary version
38
     *
39
     * @var string
40
     */
41
    protected $binaryVersion;
42
43
    /**
44
     * the output lines of the command
45
     *
46
     * @var array
47
     */
48
    protected $outputLines = array();
49
50
    /**
51
     * @inheritdoc
52
     */
53 103
    public function getBinaryPath()
54
    {
55 103
        return $this->binaryPath;
56
    }
57
58
    /**
59
     * path setter
60
     *
61
     * @param string $path the path to the system git binary
62
     */
63 106
    public function setBinaryPath(string $path)
64
    {
65 106
        $this->binaryPath = $path;
66
67 106
        return $this;
68
    }
69
70
    /**
71
     * @inheritdoc
72
     */
73 5
    public function getBinaryVersion()
74
    {
75 5
        if (is_null($this->binaryVersion)) {
76 5
            $version = $this->execute('--version')->getOutput();
0 ignored issues
show
Bug introduced by
The method getOutput() does not exist on GitElephant\Command\Caller\CallerInterface. Did you maybe mean getOutputLines()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
77 5
            if (!preg_match('/^git version [0-9\.]+$/', $version)) {
78
                throw new \RuntimeException('Could not parse git version. Unexpected format "' . $version . '".');
79
            }
80 5
            $this->binaryVersion = preg_replace('/^git version ([0-9\.]+)$/', '$1', $version);
81
        }
82
83 5
        return $this->binaryVersion;
84
    }
85
86
    /**
87
     * returns the output of the last executed command
88
     *
89
     * @return string
90
     */
91
    public function getOutput()
92
    {
93
        return implode("\n", $this->outputLines);
94
    }
95
96
    /**
97
     * returns the output of the last executed command as an array of lines
98
     *
99
     * @param bool $stripBlankLines remove the blank lines
100
     *
101
     * @return array
102
     */
103
    public function getOutputLines($stripBlankLines = false)
104
    {
105
        if ($stripBlankLines) {
106
            $output = array();
107
            foreach ($this->outputLines as $line) {
108
                if ('' !== $line) {
109
                    $output[] = $line;
110
                }
111
            }
112
113
            return $output;
114
        }
115
116
        return $this->outputLines;
117
    }
118
}
119