#!/usr/bin/env bun import { program } from "commander"; import schema from "./schema"; import typedef from "./typedef"; import backup from "./backup"; import restore from "./restore"; import exportCmd from "./export"; import importCmd from "./import"; import admin from "./admin"; import init from "../functions/init"; import { readFileSync } from "fs"; try { init(); } catch (error) { console.error(`Initialization ERROR => ${error.message}`); process.exit(1); } /** Resolves to the package root from both src/commands and dist/commands */ const { version } = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf-8")); /** * # Describe Program */ program .name(`bun-sqlite`) .description(`SQLite manager for Bun`) .version(version); /** * # Declare Commands */ program.addCommand(schema()); program.addCommand(typedef()); program.addCommand(backup()); program.addCommand(restore()); program.addCommand(exportCmd()); program.addCommand(importCmd()); program.addCommand(admin()); /** * # Handle Unavailable Commands */ program.on("command:*", () => { console.error("Invalid command: %s\nSee --help for a list of available commands.", program.args.join(" ")); process.exit(1); }); /** * # Parse Arguments */ program.parseAsync(Bun.argv).catch((error) => { console.error(`ERROR => ${error?.message || error}`); process.exit(1); });