UNPKG

fauth-template

Version:

Generate auth templates for your projects

82 lines (81 loc) 3.01 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const chalk_1 = __importDefault(require("chalk")); const prompts_1 = require("@clack/prompts"); async function askQuestion(question) { const answer = await (0, prompts_1.confirm)({ message: question, initialValue: true, }); if ((0, prompts_1.isCancel)(answer)) { console.log(chalk_1.default.red("exiting....")); process.exit(0); } return answer === true; } async function askTask() { const projectType = await (0, prompts_1.select)({ message: "Pick server folder.", options: [ { value: "go_server", label: "GO + Fiber" }, { value: "node_server", label: "Node + Express" }, { value: "go_server,node_server", label: "Both" }, ], }); if ((0, prompts_1.isCancel)(projectType)) { console.log(chalk_1.default.red("exiting....")); process.exit(0); } return projectType.split(","); } function copyDefault(targetDir, folders) { folders.forEach((folder) => { const src = path_1.default.resolve(__dirname, `../templates/${folder}`); const dest = path_1.default.join(targetDir, folder); if (fs_1.default.existsSync(src)) { const s = (0, prompts_1.spinner)(); s.start(`creating ${folder} template`); fs_1.default.cpSync(src, dest, { recursive: true }); s.stop(`✅ ${folder} template created.`); } }); } commander_1.program .name("fauth-template") .version("1.0.0") .description("Generate auth templates for your projects"); commander_1.program .command("create") .action(async () => { const targetDir = path_1.default.resolve(process.cwd(), "auth-template"); if (fs_1.default.existsSync(targetDir) && !(await askQuestion("Found 'auth-template' folder, override?"))) { console.error("❌ Directory 'auth-template' already exists. Remove it or choose a different location."); process.exit(1); } const opts = []; if (await askQuestion("do you want to include client folder?")) { opts.push("client"); } const serverFolders = await askTask(); opts.push(...serverFolders); if (opts.length < 1) { console.log(chalk_1.default.red("All inputs must be filled!")); } try { console.log(chalk_1.default.green("Adding Auth templates...")); copyDefault(targetDir, opts); console.log(chalk_1.default.green("\nAuth template generated.")); } catch (error) { console.log(chalk_1.default.red("Error generating auth templates: ", error)); } }); commander_1.program.parse(process.argv);