@bomb.sh/tools
Version:
The internal dev, build, and lint CLI for Bombshell projects
31 lines (29 loc) • 1.05 kB
JavaScript
import { cwd } from "node:process";
import { x } from "tinyexec";
import { pathToFileURL } from "node:url";
import { readFile, writeFile } from "node:fs/promises";
//#region src/commands/init.ts
async function init(ctx) {
const [_name = "."] = ctx.args;
const cwdUrl = pathToFileURL(`${cwd()}/`);
const name = _name === "." ? new URL("../", cwdUrl).pathname.split("/").filter(Boolean).pop() : _name;
const dest = new URL("./.temp/", cwdUrl);
for await (const line of x("pnpx", [
"giget@latest",
"gh:bombshell-dev/template",
name
])) console.log(line);
const promises = [];
for (const file of ["package.json", "README.md"]) promises.push(postprocess(new URL(file, dest), (contents) => {
return contents.replaceAll("$name", name);
}));
await Promise.all(promises);
}
async function postprocess(file, transform) {
const result = await transform(await readFile(file, { encoding: "utf8" }));
if (!result) return;
await writeFile(file, result, { encoding: "utf8" });
}
//#endregion
export { init };
//# sourceMappingURL=init.mjs.map