@alphacodez/alphacli
Version:
A blazing-fast CLI tool for generating modular, production-ready NestJS architecture — save time, stay consistent, and scaffold like a pro.
71 lines (70 loc) • 2.41 kB
JavaScript
#!/usr/bin/env node
import { Command } from "commander";
import TemplateGenerator from "../src/commands/generate.js";
import inquirer from "inquirer";
const program = new Command();
program.name("alphacli")
.version("1.0.0")
.description("NestJs project structure generator built by alphacodez");
// program.command('bootstrap <project_name>')
// .description('Generate a new NestJs project')
// .action(async (project_name) => {
// console.log(`Generating new NestJs project: ${project_name}`)
// await TemplateGenerator.bootstrapProject(project_name);
// })
program
.command('bootstrap')
.description('Interactive project bootstrap prompt')
.action(async () => {
const answers = await inquirer.prompt([
{
type: 'input',
name: 'name',
message: 'What should be the name of the project?',
validate: (input) => input.length > 0 || 'Name cannot be empty',
},
{
type: 'list',
name: 'database',
message: 'What type of database would you like to use for your project?',
choices: ['mongodb', 'postgres'], // 'mysql', 'sqlite'
},
{
type: 'list',
name: 'orm',
message: 'What is your prefered orm',
choices: (answers) => {
switch (answers.database) {
case 'mongodb':
return ['mongoose'];
case 'postgres':
return ['typeorm'];
default:
return [];
}
},
when: (answers) => !!answers.database,
},
]);
TemplateGenerator.bootstrapProject(answers);
});
program.command('generate:module')
.description('Generate a new module in project')
.action(async () => {
const answers = await inquirer.prompt([
{
type: 'input',
name: 'name',
message: 'What would you like to call your module?',
validate: (input) => input.length > 0 || 'Name cannot be empty',
},
{
type: 'list',
name: 'orm',
message: 'What is your current orm',
choices: ['typeorm', 'mongoose'], // 'sequelize', 'prisma',
},
]);
TemplateGenerator.generateModule(answers);
});
program.parse(process.argv);