Environment::getTasks()   B
last analyzed

Complexity

Conditions 5
Paths 5

Size

Total Lines 28
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 16
CRAP Score 5

Importance

Changes 4
Bugs 1 Features 1
Metric Value
c 4
b 1
f 1
dl 0
loc 28
ccs 16
cts 16
cp 1
rs 8.439
cc 5
eloc 14
nc 5
nop 1
crap 5
1
<?php
2
3
namespace Onigoetz\Deployer\Configuration;
4
5
use Onigoetz\Deployer\Configuration\Containers\ConfigurationContainer;
6
7
class Environment extends ConfigurationContainer
8
{
9
    /**
10
     * Find if there are some overrides for a configuration
11
     *
12
     * @param string $key
13
     * @return bool
14
     */
15 27
    protected function hasOverrides($key)
16
    {
17 27
        if (array_key_exists('overrides', $this->data) && array_key_exists($key, $this->data['overrides'])) {
18 9
            return true;
19
        }
20
21 21
        return false;
22
    }
23
24 27
    public function getSource()
25
    {
26 27
        $source = $this->getValueOrFail('source', 'no source specified');
27
28 24
        $resolvedSource = $this->manager->get('source', $source);
29
30 21
        if (!$this->hasOverrides('source')) {
31 15
            return $resolvedSource;
32
        }
33
34 6
        return Source::make('override', $this->data['overrides']['source'], $this->manager, $resolvedSource);
0 ignored issues
show
Documentation introduced by
$resolvedSource is of type object<Onigoetz\Deployer...ConfigurationContainer>, but the function expects a null|object<Onigoetz\Dep...r\Configuration\Source>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
35
    }
36
37 15
    public function getServers()
38
    {
39 15
        $servers = $this->getValueOrFail('servers', 'no servers specified');
40
41 15
        $resolvedServers = [];
42 15
        foreach ($servers as $server) {
43 15
            $resolvedServers[] = $this->manager->get('server', $server);
44 10
        }
45
46 15
        return $resolvedServers;
47
    }
48
49 21
    public function getDirectories()
50
    {
51 21
        $directories = $this->manager->getDefaultDirectories();
52
53 21
        if (!$this->hasOverrides('directories')) {
54 18
            return $directories;
55
        }
56
57 6
        return new Directories('overriden', $this->data['overrides']['directories'], $this->manager, $directories);
0 ignored issues
show
Documentation introduced by
$directories is of type object<Onigoetz\Deployer...figuration\Directories>, but the function expects a null|object<self>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
58
    }
59
60 12
    public function getTasks($event)
61
    {
62 12
        $tasks = $this->getValueOrDefault('tasks', []);
63
64 12
        if (!array_key_exists($event, $tasks)) {
65 3
            return [];
66
        }
67
68 9
        $groups = $tasks[$event];
69 9
        $actions = [];
70
71 9
        foreach ($groups as $group) {
72
            /**
73
             * @var Tasks
74
             */
75 9
            $items = $this->manager->get('tasks', $group);
76 9
            foreach ($items->getTasks() as $name => $action) {
77 9
                if (is_numeric($name)) {
78 6
                    $actions[] = $action;
79 6
                    continue;
80
                }
81
82 5
                $actions[$name] = $action;
83 6
            }
84 6
        }
85
86 9
        return $actions;
87
    }
88
89
    /**
90
     * {@inheritdoc}
91
     */
92 24
    public function checkValidity()
93
    {
94 24
        if (!$this->getSource()->isValid()) {
95 3
            return false;
96
        }
97
98 15
        if (!$this->getDirectories()->isValid()) {
99 3
            return false;
100
        }
101
102
        /**
103
         * @var Server
104
         */
105 12
        foreach ($this->getServers() as $server) {
106 12
            if (!$server->isValid()) {
107 6
                return false;
108
            }
109 6
        }
110
111 9
        return true;
112
    }
113
114 3
    public function getSubstitutions($binary)
115
    {
116
        return [
117 3
            '{{root}}' => $this->getDirectories()->getRoot(),
118 3
            '{{binaries}}' => $this->getDirectories()->getBinaries(),
119 3
            '{{binary}}' => $binary,
120 3
            '{{deploy}}' => $this->getDirectories()->getDeploy(),
121 3
            '{{environment}}' => $this->name,
122 2
        ];
123
    }
124
}
125