isConnected()) { if ($db instanceof SQL) { die($db->getLastError() . "\n"); } else { $msg = (is_string($db) ? $db : "Unknown Error"); die("Database error: $msg\n"); } } return $db; } function printHelp() { } function handleDatabase($argv) { $action = $argv[2] ?? ""; switch ($action) { case 'migrate': $db = connectDatabase(); break; case 'dump': $config = getDatabaseConfig(); $output = $argv[3] ?? null; $user = $config->getLogin(); $password = $config->getPassword(); $database = $config->getProperty("database"); $command = ["mysqldump", "-u", $user, "--password=$password"]; $descriptorSpec = [STDIN, STDOUT, STDOUT]; if ($database) { $command[] = $database; } if ($output) { $descriptorSpec[1] = ["file", $output, "w"]; } $process = proc_open($command, $descriptorSpec, $pipes); proc_close($process); break; default: die("Usage: cli.php db \n"); } } $argv = $_SERVER['argv']; if (count($argv) < 2) { die("Usage: cli.php [options...]\n"); } $command = $argv[1]; switch ($command) { case 'help': printHelp(); exit; case 'db': handleDatabase($argv); break; case 'routes': break; default: echo "Unknown command '$command'\n\n"; printHelp(); exit; }