UNPKG

@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
#!/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);