GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 02c3d0...374f40 )
by Anton
02:13
created

Deployer::getScriptManager()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
ccs 0
cts 0
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
/* (c) Anton Medvedev <[email protected]>
3
 *
4
 * For the full copyright and license information, please view the LICENSE
5
 * file that was distributed with this source code.
6
 */
7
8
namespace Deployer;
9
10
use Deployer\Console\InitCommand;
11
use Deployer\Console\WorkerCommand;
12
use Deployer\Console\Application;
13
use Deployer\Server;
14
use Deployer\Stage\StageStrategy;
15
use Deployer\Task;
16
use Deployer\Console\TaskCommand;
17
use Deployer\Type\DotArray;
18
use Monolog\Handler\StreamHandler;
19
use Monolog\Logger;
20
use Pimple\Container;
21
use Symfony\Component\Console;
22
use Symfony\Component\EventDispatcher\EventDispatcher;
23
24
/**
25
 * @property Task\TaskCollection|Task\Task[] tasks
26
 * @property Server\ServerCollection|Server\ServerInterface[] servers
27
 * @property Server\EnvironmentCollection|Server\Environment[] environments
28
 * @property DotArray config
29
 */
30
class Deployer extends Container
31
{
32
    /**
33
     * Global instance of deployer. It's can be accessed only after constructor call.
34
     * @var Deployer
35
     */
36
    private static $instance;
37
38
    /**
39
     * @param Application $console
40
     * @param Console\Input\InputInterface $input
41
     * @param Console\Output\OutputInterface $output
42
     */
43
    public function __construct(Application $console, Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
44
    {
45
        parent::__construct();
46
47
        /******************************
48
         *         Dispatcher         *
49
         ******************************/
50
51
        $this['dispatcher'] = function () {
52
            return new EventDispatcher();
53
        };
54
55
56
        /******************************
57
         *           Console          *
58
         ******************************/
59
60
        $this['console'] = function () use ($console) {
61
            return $console;
62
        };
63
        $this['input'] = function () use ($input) {
64
            return $input;
65 35
        };
66
        $this['output'] = function () use ($output) {
67 35
            return $output;
68 35
        };
69 35
70
        /******************************
71 35
         *           Config           *
72 35
         ******************************/
73 35
74 35
        $this['config'] = function () {
75 35
            return new DotArray();
76 35
        };
77
        $this->config['ssh_type'] = 'phpseclib';
78 35
        $this->config['default_stage'] = null;
79
80 35
81 35
        /******************************
82
         *            Core            *
83
         ******************************/
84
85
        $this['tasks'] = function () {
86 22
            return new Task\TaskCollection();
87
        };
88 22
        $this['servers'] = function () {
89
            return new Server\ServerCollection();
90
        };
91
        $this['environments'] = function () {
92
            return new Server\EnvironmentCollection();
93
        };
94
        $this['scriptManager'] = function ($c) {
95
            return new Task\ScriptManager($c['tasks']);
96
        };
97
        $this['stageStrategy'] = function ($c) {
98
            return new StageStrategy($c['servers'], $c['environments'], $c['config']['default_stage']);
99
        };
100
101
        /******************************
102
         *           Logger           *
103
         ******************************/
104
105
        $this['log_level'] = function ($c) {
106
            $parameters = $c['parameters'];
107 14
            return isset($parameters['log_level']) ? $parameters['log_level'] : Logger::ERROR;
108
        };
109 14
        $this['log_handler'] = function ($c) {
110
            $parameters = $c['parameters'];
111 14
            return new StreamHandler($parameters['log_file'], $parameters['log_level']);
112 14
        };
113 14
        $this['log'] = function ($c) {
114
            $parameters = $c['parameters'];
115
            $name = isset($parameters['log_name']) ? $parameters['log_name'] : 'Deployer';
116 14
            return new Logger($name);
117 14
        };
118 14
119
        self::$instance = $this;
120
        $this->getDispatcher()->dispatch('init');
121
    }
122
123
    /**
124
     * @return Deployer
125
     */
126
    public static function get()
127
    {
128
        return self::$instance;
129
    }
130
131
    /**
132
     * @param string $name
133
     * @param mixed $value
134
     */
135
    public static function setDefault($name, $value)
136
    {
137
        Deployer::get()->config[$name] = $value;
138
    }
139
140
    /**
141 35
     * @param string $name
142
     * @param mixed $default
143 35
     * @return mixed
144 35
     */
145
    public static function getDefault($name, $default = null)
146 1
    {
147
        return self::hasDefault($name) ? Deployer::get()->config[$name] : $default;
148
    }
149
150
    /**
151
     * @param string $name
152
     * @return boolean
153
     */
154
    public static function hasDefault($name)
155
    {
156
        return isset(Deployer::get()->config[$name]);
157
    }
158
159
    /**
160
     * @param string $name
161
     * @param array $array
162 14
     */
163
    public static function addDefault($name, $array)
164 14
    {
165
        if (self::hasDefault($name)) {
166
            $config = self::getDefault($name);
167
            if (!is_array($config)) {
168
                throw new \RuntimeException("Configuration parameter `$name` isn't array.");
169
            }
170 15
            self::setDefault($name, array_merge($config, $array));
171
        } else {
172 15
            self::setDefault($name, $array);
173
        }
174
    }
175
176
    /**
177
     * Run console application.
178
     */
179
    public function run()
180
    {
181
        $this->addConsoleCommands();
182
183
        $this->getConsole()->add(new WorkerCommand($this));
184
        $this->getConsole()->add(new InitCommand());
185
186
        $this->getConsole()->run($this->input, $this->output);
0 ignored issues
show
Documentation introduced by
The property input does not exist on object<Deployer\Deployer>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
Documentation introduced by
The property output does not exist on object<Deployer\Deployer>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
187
    }
188
189
    /**
190
     * Transform tasks to console commands.
191
     */
192
    public function addConsoleCommands()
193
    {
194
        $this->getConsole()->addUserArgumentsAndOptions();
195
196
        foreach ($this->tasks as $name => $task) {
197
            if ($task->isPrivate()) {
198
                continue;
199
            }
200
201
            $this->getConsole()->add(new TaskCommand($name, $task->getDescription(), $this));
202
        }
203
    }
204
205
    /**
206
     * @param string $name
207
     * @return mixed
208
     * @throws \InvalidArgumentException
209
     */
210
    public function __get($name)
211
    {
212
        if (isset($this[$name])) {
213
            return $this[$name];
214
        } else {
215
            throw new \InvalidArgumentException("Property \"$name\" does not exist.");
216
        }
217
    }
218
219
    /**
220
     * @return EventDispatcher
221
     */
222
    public function getDispatcher()
223
    {
224
        return $this['dispatcher'];
225
    }
226
227
    /**
228
     * @return Application
229
     */
230
    public function getConsole()
231
    {
232
        return $this['console'];
233
    }
234
235
    /**
236
     * @return Console\Input\InputInterface
237
     */
238
    public function getInput()
239
    {
240
        return $this['input'];
241
    }
242
243
    /**
244
     * @return Console\Output\OutputInterface
245
     */
246
    public function getOutput()
247
    {
248
        return $this['output'];
249
    }
250
251
    /**
252
     * @param string $name
253
     * @return Console\Helper\HelperInterface
254
     */
255
    public function getHelper($name)
256
    {
257
        return $this->getConsole()->getHelperSet()->get($name);
258
    }
259
260
    /**
261
     * @return StageStrategy
262
     */
263
    public function getStageStrategy()
264
    {
265
        return $this['stageStrategy'];
266
    }
267
268
    /**
269
     * @return Task\ScriptManager
270
     */
271
    public function getScriptManager()
272
    {
273
        return $this['scriptManager'];
274
    }
275
}
276