3
3
namespace Stub \Framework \Console \Commands ;
4
4
5
5
use Stub \Framework \Console \Base \Command ;
6
+ use Stub \Framework \Console \Base \Input ;
7
+ use Stub \Framework \Console \Base \Output ;
6
8
use Stub \Framework \Console \Base \StringDecorator as SD ;
7
9
use Stub \Framework \Contracts \Console \Commands ;
8
10
use Stub \Framework \Main \Application ;
9
11
10
- class ListCommand extends Command implements Commands
12
+ class ListCommand extends Command
11
13
{
12
14
public function __construct ()
13
15
{
@@ -21,42 +23,45 @@ public function __construct()
21
23
* Формирует список всех доступных в текущей версии SimpleStub Framework команд
22
24
* с общей информацией о действиях команд ыи параметрах.
23
25
*
24
- * Детальная информация по каждой коменде может быть получена при использовании команды help с передачей
25
- * в качестве параметра ей наименования команды, справку по которой нужно получить.
26
- * @return string - возвращает отформатированную для консоли строку результата.
26
+ * Детальная информация по каждой команде может быть получена при использовании команды
27
+ * help с передачей в качестве параметра ей наименования команды, справку по которой
28
+ * нужно получить.
29
+ * @return string - возвращает отформатированную для консоли строку результата.
27
30
*/
28
- public function run (): string
31
+ public function run (Input $ input = null , Output $ output = null ): string
29
32
{
30
33
$ resultString = "SimpleStub Framework " . SD ::green (Application::VERSION ) . "\r\n\n" ;
31
34
$ resultString .= SD ::brown ("Usage: \r\n" );
32
35
$ resultString .= "command [options] [arguments] \r\n\n" ;
33
36
$ resultString .= SD ::brown ("Options: \r\n" );
34
37
$ resultString .= " " . str_pad (SD ::green ("-h, --help " ), 32 );
35
- $ resultString .= "Показать справку для выбранной команды, если команда не задана, будет выполнена команда " . SD ::green ("list " ) . "\r\n" ;
38
+ $ resultString .= "Показать справку для выбранной команды, если команда не задана, будет выполнена команда "
39
+ . SD ::green ("list " ) . "\r\n" ;
36
40
$ resultString .= " " . str_pad (SD ::green ("-q, --quiet " ), 32 );
37
41
$ resultString .= "Блокировать (не выводить / игнорировать) все сообщения (генерируемые при выполнении команды) \r\n" ;
38
42
$ resultString .= " " . str_pad (SD ::green ("-V, --version " ), 32 );
39
43
$ resultString .= "Вывести версию приложения (команда в данном случае не важна) \r\n" ;
40
44
$ resultString .= " " . str_pad (SD ::green ("-n, --no-interaction " ), 32 );
41
45
$ resultString .= "Не задавать никаких вопросов (блокировать интерактивный режим) \r\n\n" ;
42
46
43
- $ prepareListCommand = $ this ->getClassesByNamespace (" Stub\Framework\Console\Commands \\" );
47
+ $ prepareListCommand = $ this ->getClassesByNamespace (__NAMESPACE__ );
44
48
if (empty ($ prepareListCommand )) {
45
49
$ resultString .= SD ::red ("ДОСТУПНЫХ КОМАНД НЕТ! " ) . "\r\n" ;
46
50
} else {
47
51
$ resultString .= SD ::brown ("Available commands: " ) . "\r\n" ;
48
- $ sortclasses = $ this ->sortCommandsByGroup ($ prepareListCommand , " Stub\Framework\Console\Commands \\" );
49
- foreach ($ sortclasses as $ key => $ value ) {
52
+ $ sortedAvailableClasses = $ this ->sortCommandsByGroup ($ prepareListCommand , __NAMESPACE__ );
53
+ foreach ($ sortedAvailableClasses as $ key => $ value ) {
50
54
$ resultString .= SD ::brown ($ key ) . "\r\n" ;
51
- foreach ($ value as $ fclass ) {
55
+ foreach ($ value as $ commandClass ) {
52
56
/** @var Commands $currentClass */
53
- $ currentClass = new $ fclass ();
57
+ $ currentClass = new $ commandClass ();
54
58
$ resultString .= " " . str_pad (SD ::green ($ currentClass ->name ), 32 );
55
59
$ resultString .= $ currentClass ->description . "\r\n" ;
56
60
}
57
61
}
58
62
}
59
- return $ resultString ;
63
+ $ output ->writeln ($ resultString );
64
+ return "OK " ;
60
65
}
61
66
62
67
/**
@@ -65,7 +70,7 @@ public function run(): string
65
70
* Для работы этого метода используется автозагрузчик ***composer***.
66
71
*
67
72
* ***Важно!!!***
68
- * Должен быть сгенерирован оптимизированный автозагрузчик, используя -oпцию для работы со всеми классами.
73
+ * Должен быть сгенерирован оптимизированный автозагрузчик, используя опцию для работы со всеми классами.
69
74
* ***composer dump-autoload -o ***
70
75
* @return array
71
76
*/
@@ -119,7 +124,7 @@ private function getClassesByNamespace(string $namespace): array
119
124
* @return array Двумерный ассоциативный массив где key - это группа команд, value - одномерный
120
125
* массив пространств имен классов команд, входящих в группу.
121
126
*/
122
- private function sortCommandsByGroup (array $ prepareArrayCommandClasses , $ namespace ): array
127
+ private function sortCommandsByGroup (array $ prepareArrayCommandClasses , string $ namespace ): array
123
128
{
124
129
if (0 !== strpos ($ namespace , '\\' )) {
125
130
$ namespace = '\\' . $ namespace ;
0 commit comments