UNPKG

create-avo-tools

Version:

A CLI for creating projects with your chosen tech stack and language

59 lines (55 loc) 1.89 kB
import inquirer from 'inquirer'; export const getLanguage = async () => { const { language } = await inquirer.prompt([ { type: 'list', name: 'language', message: 'Which programming language would you like to use?', choices: ['JavaScript', 'TypeScript', 'Python', 'Ruby', 'Go', 'Java', 'PHP'], }, ]); return language; }; export const getTechStackAndProjectName = async (language) => { let techStackChoices = []; if (language === 'JavaScript' || language === 'TypeScript') { techStackChoices = ['React', 'Vue', 'Angular', 'Svelte']; } else if (language === 'Python') { techStackChoices = ['Flask', 'Django', 'FastAPI', 'Pyramid', 'Tornado']; } else if (language === 'Ruby') { techStackChoices = ['Rails', 'Sinatra']; } else if (language === 'Go') { techStackChoices = ['Gin', 'Echo']; } else if (language === 'Java') { techStackChoices = ['Spring Boot', 'Micronaut']; } else if (language === 'PHP') { techStackChoices = ['Laravel', 'Symfony']; } const { techStack, projectName, targetDirectory } = await inquirer.prompt([ { type: 'list', name: 'techStack', message: 'Which tech stack would you like to use?', choices: techStackChoices, }, { type: 'input', name: 'projectName', message: 'Enter a name for your project:', default: 'my_project', validate: function (input) { if (/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(input)) { return true; } return 'Project name must be a valid identifier (letters, numbers, and underscores only, and cannot start with a number).'; }, }, { type: 'input', name: 'targetDirectory', message: 'Enter the directory where you want to create the project:', default: process.cwd(), }, ]); return { techStack, projectName, targetDirectory }; };