DenReg/cli/commands/init.ts
2023-11-28 16:10:33 +01:00

55 lines
1.4 KiB
TypeScript

import { CliffyPrompt, Path, FS } from "../deps.ts";
import {
getMeta,
setMeta,
IMeta,
getConfig,
isInteractive,
} from "../global.ts";
export default async function init() {
let existing = {};
try {
existing = await getMeta();
} catch (err) { }
let meta: IMeta = {
name: Path.basename(Deno.cwd()).toLowerCase().replace(/\s+/g, "-"),
version: "0.0.1",
description: "",
author: getConfig("author"),
contributors: [],
files: ["**/*.ts", "**/*.js", "README.md"],
...existing,
};
if (isInteractive()) {
meta.name = await CliffyPrompt.Input.prompt({
message: "What's the name of your package?",
default: meta.name,
});
meta.description = await CliffyPrompt.Input.prompt({
message: "What's the description of your package?",
default: meta.description,
});
meta.author = await CliffyPrompt.Input.prompt({
message: "Who's the author of your package?",
default: meta.author,
});
if (!(await FS.exists("README.md"))) {
const res = await CliffyPrompt.Confirm.prompt({
message: "Autogenerate README?",
default: true,
});
if (res) {
await Deno.writeFile(
"README.md",
new TextEncoder().encode(meta.description || "")
);
}
}
}
await setMeta(meta);
}