#!/usr/bin/env bun import { program } from "commander"; import start from "./start"; import dev from "./dev"; import build from "./build"; import sitemap from "./sitemap"; import { log } from "../utils/log"; import setupDistDir from "../functions/setup-dist-dir"; /** * # Describe Program */ program .name(`bunext`) .description(`A React Next JS replacement built with bun JS`) .version(`1.0.43`); /** * # Declare Commands */ program.addCommand(dev()); program.addCommand(start()); program.addCommand(build()); program.addCommand(sitemap()); /** * # Resolve the Dist Directory * Before any command runs, from `--dist-dir` or the config. Child server * processes inherit it through `BUNEXT_DIST_DIR`. */ program.hook("preAction", async (_program, action_command) => { try { await setupDistDir({ dist_dir: action_command.opts().distDir }); } catch (error) { log.error(error?.message || String(error)); process.exit(1); } }); /** * # Handle Unavailable Commands */ program.on("command:*", () => { log.error("Invalid command: %s\nSee --help for a list of available commands." + " " + program.args.join(" ")); process.exit(1); }); /** * # Parse Arguments */ await program.parseAsync(Bun.argv);