42 lines
1.1 KiB
JavaScript
Executable File
42 lines
1.1 KiB
JavaScript
Executable File
#! /usr/bin/env node
|
|
const path = require("node:path");
|
|
const { execSync } = require("child_process");
|
|
const readlineSync = require("readline-sync");
|
|
|
|
const variants = ["NestJS", "ExpressJS"];
|
|
const variant_branch_mapping = { NestJS: "nestjs", ExpressJS: "express" };
|
|
|
|
console.log("\x1b[34mBackend framework variants:\x1b[0m");
|
|
|
|
const variant = readlineSync.keyInSelect(
|
|
variants,
|
|
"\x1b[34m>\x1b[0m Choose backend framework",
|
|
);
|
|
|
|
if (variant < 0) {
|
|
console.log("\x1b[31mBye!\x1b[0m");
|
|
return;
|
|
} else {
|
|
const project_name = readlineSync.question(
|
|
"\x1b[34m>\x1b[0m Project name (empty for default): \x1b[0m",
|
|
);
|
|
|
|
const git_command =
|
|
"git clone -b " +
|
|
variant_branch_mapping[variants[variant]] +
|
|
" https://github.com/dqnid/full-stack-archetype.git " +
|
|
project_name;
|
|
|
|
console.log("\x1b[34mCloning the repo...\x1b[0m");
|
|
console.log("\x1b[34m-------------------\x1b[0m");
|
|
|
|
execSync(git_command, {
|
|
stdio: [0, 1, 2], // stdin, stdout, stderr
|
|
cwd: path.resolve(""),
|
|
});
|
|
|
|
console.log("\x1b[32m-----\x1b[0m");
|
|
console.log("\x1b[32mDone!\x1b[0m");
|
|
console.log("\x1b[32m-----\x1b[0m");
|
|
}
|