-
Notifications
You must be signed in to change notification settings - Fork 0
/
alisa
148 lines (101 loc) · 4.76 KB
/
alisa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/usr/bin/php
<?php
use Dotenv\Dotenv;
use Framework\Database\Migrator;
require __DIR__ . '/vendor/autoload.php';
Dotenv::createImmutable(__DIR__)->load();
switch ($argv[1] ?? null) {
case 'serve':
$port = $argv[2] ?? 8000;
die(shell_exec("php -S localhost:{$port} -t public"));
case 'migrate:up':
Migrator::up();
break;
case 'migrate:down':
$confirm = readline('(!) Действительно удалить все таблицы? [y/N]: ');
if ($confirm && strtolower($confirm) === 'y') {
Migrator::down();
}
break;
case 'migrate:fresh':
$confirm = readline('Вы уверены? [y/N]: ');
if ($confirm && strtolower($confirm) === 'y') {
Migrator::fresh();
}
break;
case 'make:component':
if (!isset($argv[2])) {
die('[Ошибка] Укажите название компонента: php alisa make:component <name>.');
}
$name = $argv[2];
$path = project_path('app/Components/' . $name . '.php');
if (file_exists($path)) {
die('[Ошибка] Компонент уже существует: ' . $path . '" ');
}
$stub = file_get_contents(project_path('framework/stubs/component.stub'));
$stub = str_replace('%name%', $name, $stub);
file_put_contents($path, $stub);
echo '[OK] Компонент создан: ' . $path;
break;
case 'make:controller':
if (!isset($argv[2])) {
die('[Ошибка] Укажите название контролера: php alisa make:controller <name>.');
}
$name = $argv[2];
$path = project_path('app/Controllers/' . $name . '.php');
if (file_exists($path)) {
die('[Ошибка] Контроллер уже существует: ' . $path . '" ');
}
$stub = file_get_contents(project_path('framework/stubs/controller.stub'));
$stub = str_replace('%name%', $name, $stub);
file_put_contents($path, $stub);
echo '[OK] Контроллер создан: ' . $path;
break;
case 'make:middleware':
if (!isset($argv[2])) {
die('[Ошибка] Укажите название мидлвари: php alisa make:middleware <name>.');
}
$name = $argv[2];
$path = project_path('app/Middlewares/' . $name . '.php');
if (file_exists($path)) {
die('[Ошибка] Мидлваря уже существует: ' . $path . '" ');
}
$stub = file_get_contents(project_path('framework/stubs/middleware.stub'));
$stub = str_replace('%name%', $name, $stub);
file_put_contents($path, $stub);
echo '[OK] Мидлваря создана: ' . $path;
break;
case 'make:migration':
if (!isset($argv[2])) {
die('[Ошибка] Укажите название таблицы: php alisa make:migration <table>.');
}
$table = $argv[2];
$path = project_path('database/migrations/' . time() . '-table-' . $table . '.php');
if (file_exists($path)) {
die('[Ошибка] Миграция уже существует: ' . $path . '" ');
}
$stub = file_get_contents(project_path('framework/stubs/migration.stub'));
$stub = str_replace('%table%', $table, $stub);
file_put_contents($path, $stub);
echo '[OK] Миграция создана: ' . $path;
break;
case 'help':
case '--help':
case '-h':
default:
echo "----------------------" . PHP_EOL;
echo "| Доступные команды: |" . PHP_EOL;
echo "----------------------" . PHP_EOL;
echo " [Сервер]" . PHP_EOL;
echo " - php alisa serve <port?> .................. Запустить сервер" . PHP_EOL;
echo " [Создать]" . PHP_EOL;
echo " - php alisa make:component <name> .......... Создать компонент" . PHP_EOL;
echo " - php alisa make:controller <name> ......... Создать контроллер" . PHP_EOL;
echo " - php alisa make:middleware <name> ......... Создать мидлварь" . PHP_EOL;
echo " - php alisa make:migration <table> ......... Создать миграцию" . PHP_EOL;
echo " [Миграции]" . PHP_EOL;
echo " - php alisa migrate:up ..................... Накатить миграции" . PHP_EOL;
echo " - php alisa migrate:down ................... Откатить миграции" . PHP_EOL;
echo " - php alisa migrate:fresh .................. Перекатить все таблицы" . PHP_EOL;
break;
}