dashme
Version:
Reusable CLI to bootstrap Initiadev dashboard apps
79 lines (69 loc) • 2.04 kB
JavaScript
#!/usr/bin/env node
const { resolve } = require("path");
const { create } = require("create-create-app");
const templateRoot = resolve(__dirname, "..", "templates");
const [, , rawArg] = process.argv;
const fallbackName = rawArg || "my-app";
const cond = process.argv;
if (cond.includes("--help") || cond.includes("-h")) {
process.exit(0);
}
create("dashme", {
templateRoot,
defaultTemplate: "default",
promptForTemplate: false,
skipPrompts: true,
skipGitInit: true,
defaultName: rawArg,
extra: {
name: {
type: "input",
describe: "Project Name: ",
default: fallbackName,
prompt: rawArg ? false : "if-no-arg",
},
// auth: {
// type: "confirm",
// describe: "Enable Next-auth?",
// default: true,
// prompt: "if-no-arg",
// },
// language: {
// type: "list",
// choices: ["TypeScript", "JavaScript"],
// describe: "Choose your language",
// default: "TypeScript",
// prompt: "if-no-arg",
// },
// uilib: {
// type: "list",
// choices: ["Shadcn UI", "MUI", "Ant Design", "None"],
// describe: "Choose your UI library",
// default: "Shadcn UI",
// prompt: "if-no-arg",
// },
// database: {
// type: "list",
// choices: ["PostgreSQL", "SQLite", "MongoDB", "None"],
// describe: "Choose your database",
// default: "PostgreSQL",
// prompt: "if-no-arg",
// },
},
after: ({ answers, name }) => {
if (!answers.name) {
answers.name = name || "my-app";
}
console.log("📦 Summary:");
console.log(`- Project Name: ${answers.name}`);
// console.log(`- Auth Enabled: ${answers.auth}`);
// console.log(`- Language: ${answers.language}`);
// console.log(`- UI Library: ${answers.uiLib}`);
// console.log(`- Database: ${answers.database}`);
},
caveat: () => {
console.log(
`📂 Don't forget to \x1b[1mcd\x1b[0m into your project and run \x1b[1mnpm run dev\x1b[0m to get started.`
);
},
});