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.

App::setName()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 2 Features 0
Metric Value
cc 1
eloc 2
c 2
b 2
f 0
nc 1
nop 1
dl 0
loc 5
rs 10
1
<?php
2
/**
3
 * This file is part of the O2System Framework package.
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 *
8
 * @author         Steeve Andrian Salim
9
 * @copyright      Copyright (c) Steeve Andrian Salim
10
 */
11
12
// ------------------------------------------------------------------------
13
14
namespace O2System\Kernel\Cli;
15
16
// ------------------------------------------------------------------------
17
18
use O2System\Kernel\Cli\Abstracts\AbstractCommander;
19
use O2System\Kernel\Cli\Abstracts\AbstractCommandersPool;
20
use O2System\Kernel\Cli\Writers\Format;
21
use O2System\Kernel\Cli\Writers\Table;
22
use O2System\Kernel\Cli\Writers\Text;
23
24
/**
25
 * Class App
26
 *
27
 * Command line interface (cli) application commands container class.
28
 *
29
 * @package O2System\Kernel\Cli
30
 */
31
class App extends AbstractCommandersPool
32
{
33
    /**
34
     * App::$logo
35
     *
36
     * Cli-App welcome note.
37
     *
38
     * @var string
39
     */
40
    protected $welcomeNote;
41
42
    /**
43
     * App::$name
44
     *
45
     * Cli-App name.
46
     *
47
     * @var string
48
     */
49
    protected $name;
50
51
    /**
52
     * App::$version
53
     *
54
     * Cli-App version.
55
     *
56
     * @var string
57
     */
58
    protected $version;
59
60
    /**
61
     * App::$description
62
     *
63
     * Cli-App description.
64
     *
65
     * @var string
66
     */
67
    protected $description;
68
69
    // ------------------------------------------------------------------------
70
71
    /**
72
     * App::__construct
73
     *
74
     * Cli-App constructor.
75
     */
76
    public function __construct()
77
    {
78
        language()->loadFile('cli');
79
    }
80
81
    // ------------------------------------------------------------------------
82
83
    /**
84
     * App::addCommander
85
     *
86
     * Add new commander to the pool.
87
     *
88
     * @param AbstractCommander $commander
89
     */
90
    public function addCommander(AbstractCommander $commander)
91
    {
92
        if (method_exists($commander, 'setApp')) {
93
            $commander->setApp($this);
94
        }
95
96
        $this->commandersPool[ $commander->getCommandName() ] = $commander;
97
    }
98
99
    // ------------------------------------------------------------------------
100
101
    /**
102
     * App::getWelcomeNote
103
     *
104
     * @return string
105
     */
106
    public function getWelcomeNote()
107
    {
108
        return $this->welcomeNote;
109
    }
110
111
    // ------------------------------------------------------------------------
112
113
    /**
114
     * App::setWelcomeNote
115
     *
116
     * Sets cli-app welcome note.
117
     *
118
     * @param string $welcomeNote
119
     *
120
     * @return static
121
     */
122
    public function setWelcomeNote($welcomeNote)
123
    {
124
        $this->welcomeNote = $welcomeNote;
125
126
        return $this;
127
    }
128
129
    public function getName()
130
    {
131
        return $this->name;
132
    }
133
134
    // ------------------------------------------------------------------------
135
136
    /**
137
     * App::setName
138
     *
139
     * Sets cli-app name.
140
     *
141
     * @param string $name
142
     *
143
     * @return static
144
     */
145
    public function setName($name)
146
    {
147
        $this->name = trim($name);
148
149
        return $this;
150
    }
151
152
    /**
153
     * App::getVersion
154
     *
155
     * Gets cli-app version.
156
     *
157
     * @return string
158
     */
159
    public function getVersion()
160
    {
161
        return $this->version;
162
    }
163
164
    // ------------------------------------------------------------------------
165
166
    /**
167
     * App::setVersion
168
     *
169
     * Sets cli-app version.
170
     *
171
     * @param string $version
172
     *
173
     * @return static
174
     */
175
    public function setVersion($version)
176
    {
177
        $this->version = trim($version);
178
179
        return $this;
180
    }
181
182
    /**
183
     * App::setDescription
184
     *
185
     * Sets cli-app description.
186
     *
187
     * @param string $description
188
     *
189
     * @return static
190
     */
191
    public function setDescription($description)
192
    {
193
        $this->description = trim($description);
194
195
        return $this;
196
    }
197
198
    // ------------------------------------------------------------------------
199
200
    /**
201
     * App::run
202
     *
203
     * Run cli-app
204
     *
205
     * @return static
206
     * @throws \ReflectionException
207
     */
208
    public function run()
209
    {
210
        $command = new \ReflectionClass($this);
211
        $options = input()->get();
212
213
        if (empty($options)) {
214
            if ($this->welcomeNote instanceof Format or $this->welcomeNote instanceof Text) {
0 ignored issues
show
introduced by
$this->welcomeNote is never a sub-type of O2System\Kernel\Cli\Writers\Text.
Loading history...
215
                output()->write($this->welcomeNote);
216
            } elseif (is_string($this->welcomeNote) and $this->welcomeNote !== '') {
217
                output()->write(
0 ignored issues
show
Bug introduced by
The method write() does not exist on O2System\Kernel\Http\Output. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

217
                output()->/** @scrutinizer ignore-call */ write(

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
218
                    (new Format())
219
                        ->setString(language()->getLine($this->welcomeNote))
220
                        ->setNewLinesAfter(1)
221
                );
222
            }
223
224
            output()->write(
225
                (new Format())
226
                    ->setString($this->name . ' v' . $this->version)
227
                    ->setNewLinesBefore(2)
228
                    ->setNewLinesAfter(1)
229
            );
230
231
            // Run help option
232
            $this->optionHelp();
233
        } else {
234
235
            foreach ($options as $method => $arguments) {
236
237
                if ($method === 'h') {
238
                    $method = 'help';
239
                } elseif ($method === 'v') {
240
                    $method = 'version';
241
                } elseif ($method === 'vv') {
242
                    $method = 'verbose';
243
                }
244
245
                $optionMethod = camelcase('option-' . $method);
246
247
                if ($command->hasMethod($optionMethod)) {
248
249
                    $commandMethod = $command->getMethod($optionMethod);
250
251
                    if ($commandMethod->getNumberOfRequiredParameters() == 0) {
252
                        call_user_func([&$this, $optionMethod]);
253
                    } else {
254
                        $optionArguments = is_array($arguments)
255
                            ? $arguments
256
                            : [$arguments];
257
258
                        call_user_func_array([&$this, $optionMethod], $optionArguments);
259
                    }
260
                }
261
            }
262
        }
263
    }
264
265
    // ------------------------------------------------------------------------
266
267
    /**
268
     * App::optionHelp
269
     *
270
     * @return void
271
     */
272
    public function optionHelp()
273
    {
274
        // Show Usage
275
        output()->write(
276
            (new Format())
277
                ->setContextualClass(Format::INFO)
278
                ->setString(language()->getLine('CLI_USAGE') . ':')
279
                ->setNewLinesBefore(1)
280
                ->setNewLinesAfter(1)
281
        );
282
283
        output()->write(
284
            (new Format())
285
                ->setContextualClass(Format::INFO)
286
                ->setString('command:action --option=value')
287
                ->setNewLinesAfter(2)
288
        );
289
290
        // Show Commanders
291
        $this->loadCommanders();
292
293
        if (count($this->commandersPool)) {
294
            output()->write(
295
                (new Format())
296
                    ->setString(language()->getLine('CLI_COMMANDS') . ':')
297
                    ->setNewLinesAfter(1)
298
            );
299
300
            $table = new Table();
301
            $table->isShowBorder = false;
302
303
            foreach ($this->commandersPool as $commander) {
304
305
                if ($commander instanceof AbstractCommander) {
306
                    $table
307
                        ->addRow()
308
                        ->addColumn($commander->getCommandName())
309
                        ->addColumn(language()->getLine($commander->getCommandDescription()));
310
                }
311
            }
312
313
            output()->write(
314
                (new Format())
315
                    ->setString($table->render())
316
                    ->setNewLinesAfter(2)
317
            );
318
        }
319
320
        // Show Options
321
        output()->write(
322
            (new Format())
323
                ->setString(language()->getLine('CLI_OPTIONS') . ':')
324
                ->setNewLinesAfter(1)
325
        );
326
327
        $table = new Table();
328
        $table->isShowBorder = false;
329
330
        $table
331
            ->addRow()
332
            ->addColumn('--version')
333
            ->addColumn('-v')
334
            ->addColumn(language()->getLine('CLI_HELP_SHOW_OPTION_VERSION'))
335
            ->addRow()
336
            ->addColumn('--help')
337
            ->addColumn('-h')
338
            ->addColumn(language()->getLine('CLI_HELP_SHOW_OPTION_HELP'))
339
            ->addRow()
340
            ->addColumn('--verbose')
341
            ->addColumn('-vv')
342
            ->addColumn(language()->getLine('CLI_HELP_SHOW_OPTION_VERBOSE'));
343
344
        output()->write(
345
            (new Format())
346
                ->setString($table->render())
347
                ->setNewLinesAfter(2)
348
        );
349
350
        exit(EXIT_SUCCESS);
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
351
    }
352
353
    // ------------------------------------------------------------------------
354
355
    /**
356
     * App::optionVersion
357
     *
358
     * @return void
359
     */
360
    public function optionVersion()
361
    {
362
        if (property_exists($this, 'version')) {
363
            if ( ! empty($this->version)) {
364
                output()->write(
365
                    (new Format())
366
                        ->setString($this->name . ' v' . $this->version . ' Copyright (c) 2011 - ' . date('Y') . ' Steeve Andrian Salim')
367
                        ->setNewLinesAfter(1)
368
                );
369
370
                output()->write(
371
                    (new Format())
372
                        ->setIndent(2)
373
                        ->setString('this framework is trademark of Steeve Andrian Salim')
374
                        ->setNewLinesAfter(1)
375
                );
376
            }
377
        }
378
    }
379
}