From a67b04ba512f551a8a8140bf41e90d7c3b4d2a92 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Tue, 7 Oct 2025 20:54:26 -0700 Subject: [PATCH] rmproject --- bin/rmproject.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 bin/rmproject.ts diff --git a/bin/rmproject.ts b/bin/rmproject.ts new file mode 100644 index 0000000..42077fa --- /dev/null +++ b/bin/rmproject.ts @@ -0,0 +1,20 @@ +// Remove a project. Careful! There's no undo. + +import { rmdirSync } from "fs" +import { DEFAULT_PROJECT } from "@/config" +import { projectDir, projects, projectName } from "@/project" +import load from "./load" + +export default function (project: string, confirm = false) { + if (!projects().includes(project)) throw `no ${project} project` + if (project === DEFAULT_PROJECT) throw `can't delete ${DEFAULT_PROJECT} project` + if (!confirm) throw `> Are you POSITIVE?\n> Run again with 'true' at the end:\n\n$ rmproject ${project} true` + + const isCurrent = projectName() === project + + rmdirSync(projectDir(project), { recursive: true }) + + if (isCurrent) + + return `${project} deleted` +} \ No newline at end of file