| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- declare(strict_types=1);
- /**
- * 迁移 CLI:php app/cli/migrate.php [up|status]
- */
- define('APP_ROOT', dirname(__DIR__, 2));
- require APP_ROOT . '/vendor/autoload.php';
- use Glacier\Core\Config;
- use Glacier\Core\Database;
- use Glacier\Core\Migrator;
- date_default_timezone_set('Asia/Shanghai');
- $config = require APP_ROOT . '/app/config/env.php';
- Config::load($config);
- $cmd = $argv[1] ?? 'up';
- try {
- $migrator = new Migrator(Database::pdo(), APP_ROOT . '/database');
- switch ($cmd) {
- case 'up':
- $executed = $migrator->up();
- if ($executed === []) {
- echo '无待执行迁移(已是最新)', PHP_EOL;
- } else {
- foreach ($executed as $name) {
- echo "已应用: {$name}", PHP_EOL;
- }
- }
- break;
- case 'status':
- foreach ($migrator->status() as $row) {
- printf("%-40s %s%s", $row['name'], $row['applied'] ? '已应用' : '待执行', PHP_EOL);
- }
- break;
- default:
- fwrite(STDERR, '用法: php app/cli/migrate.php [up|status]' . PHP_EOL);
- exit(2);
- }
- } catch (\Throwable $e) {
- fwrite(STDERR, '迁移失败: ' . $e->getMessage() . PHP_EOL);
- exit(1);
- }
|