fauth-template
Version:
Generate auth templates for your projects
82 lines (81 loc) • 3.01 kB
JavaScript
;
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);