Completed
Pull Request — stable (#381)
by
unknown
07:43 queued 04:41
created

Command::ask()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 7.456

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 9
c 3
b 0
f 0
dl 0
loc 16
ccs 4
cts 10
cp 0.4
rs 9.9666
cc 4
nc 3
nop 3
crap 7.456
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * This file is part of Laravel Zero.
7
 *
8
 * (c) Nuno Maduro <[email protected]>
9
 *
10
 *  For the full copyright and license information, please view the LICENSE
11
 *  file that was distributed with this source code.
12
 */
13
14
namespace LaravelZero\Framework\Commands;
15
16
use function func_get_args;
17
use Illuminate\Console\Command as BaseCommand;
18
use Illuminate\Console\Scheduling\Schedule;
19
use LaravelZero\Framework\Providers\CommandRecorder\CommandRecorderRepository;
20
use function str_repeat;
21
use function strlen;
22
23
abstract class Command extends BaseCommand
24
{
25
    /**
26
     * Holds an instance of the app, if any.
27
     *
28
     * @var \LaravelZero\Framework\Application
29
     */
30
    protected $app;
31
32
    /**
33
     * Define the command's schedule.
34
     *
35
     * @param  \Illuminate\Console\Scheduling\Schedule $schedule
36
     * @return void
37
     */
38 39
    public function schedule(Schedule $schedule)
0 ignored issues
show
Unused Code introduced by
The parameter $schedule is not used and could be removed. ( Ignorable by Annotation )

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

38
    public function schedule(/** @scrutinizer ignore-unused */ Schedule $schedule)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
39
    {
40 39
    }
41
42
    /**
43
     * {@inheritdoc}
44
     */
45 39
    public function setLaravel($laravel): void
46
    {
47 39
        parent::setLaravel($this->app = $laravel);
48 39
    }
49
50
    /**
51
     * Performs the given task, outputs and
52
     * returns the result.
53
     */
54 17
    public function task(string $title = '', $task = null): bool
55
    {
56 17
        return $this->__call('task', func_get_args());
57
    }
58
59
    /*
60
     * Displays the given string as title.
61
     */
62 2
    public function title(string $title): Command
63
    {
64 2
        $size = strlen($title);
65 2
        $spaces = str_repeat(' ', $size);
66
67 2
        $this->output->newLine();
68 2
        $this->output->writeln("<bg=blue;fg=white>$spaces$spaces$spaces</>");
69 2
        $this->output->writeln("<bg=blue;fg=white>$spaces$title$spaces</>");
70 2
        $this->output->writeln("<bg=blue;fg=white>$spaces$spaces$spaces</>");
71 2
        $this->output->newLine();
72
73 2
        return $this;
74
    }
75
76
    /**
77
     * {@inheritdoc}
78
     */
79 1
    public function call($command, array $arguments = [])
80
    {
81 1
        resolve(CommandRecorderRepository::class)->create($command, $arguments);
82
83 1
        return parent::call($command, $arguments);
84
    }
85
86
    /**
87
     * {@inheritdoc}
88
     */
89
    public function callSilent($command, array $arguments = [])
90
    {
91
        resolve(CommandRecorderRepository::class)->create($command, $arguments, CommandRecorderRepository::MODE_SILENT);
92
93
        return parent::callSilent($command, $arguments);
94
    }
95
96
    /**
97
     * {@inheritdoc}
98
     *
99
     * @see {https://github.com/laravel/framework/pull/27005}
100
     */
101 39
    public function setHidden($hidden)
102
    {
103 39
        parent::setHidden($this->hidden = $hidden);
104
105 39
        return $this;
106
    }
107
108
    /**
109
     * Prompt the user for input.
110
     *
111
     * @param  string  $question
112
     * @param  string|null  $default
113
     * @param  array|string|null  $validationRule
114
     * @return mixed
115
     */
116 2
    public function ask($question, $default = null, $validationRule = null)
117
    {
118 2
        $validator = null;
119 2
        if ($validationRule) {
120
            if (! class_exists(\Illuminate\Validation\Validator::class) || ! $this->app->bound('validator')) {
121
                throw new \RuntimeException('The "illuminate/validation" package is required to use validation rules');
122
            }
123
124
            $validator = function ($answer) use ($question, $validationRule) {
125
                \Illuminate\Support\Facades\Validator::make([$question => $answer], [
126
                    $question => $validationRule,
127
                ])->validate();
128
            };
129
        }
130
131 2
        return $this->output->ask($question, $default, $validator);
132
    }
133
}
134