UNPKG

create-typescript-project-scaffolding

Version:
48 lines (47 loc) 3.93 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { additionalObjects, mP } from '../util/helper.js'; import Name from './answerHandlers/name.js'; import { spawn } from 'child_process'; import { checkbox, confirm, input, select } from '@inquirer/prompts'; export function askQuestions() { return __awaiter(this, void 0, void 0, function* () { const promptArray = {}; promptArray['project-name'] = yield input(Object.assign(Object.assign({ message: mP() + 'The name of the project (. for current directory):' }, additionalObjects), { validate(input) { return Name.validate(input); } })); promptArray['project-type'] = yield select(Object.assign({ choices: ['http-api@express-utils', 'websocket-server', 'socket-io-server', 'npm-package', 'empty-project'], message: mP() + 'Please select the type of project you want to create:' }, additionalObjects)); if (promptArray['project-type'] !== 'npm-package') { promptArray['project-dockerfile-enabled'] = yield confirm(Object.assign({ message: mP() + 'Add Dockerfile?', default: true }, additionalObjects)); } promptArray['project-cicd-pipeline'] = yield select(Object.assign({ choices: ['gitlab', 'github', 'none'], message: mP() + 'Select the CI-CD Pipeline Template:', default: 'github' }, additionalObjects)); promptArray['project-additional-dependencies'] = yield checkbox(Object.assign({ choices: [ { name: 'eslint_prettier', value: 'eslint_prettier', checked: true }, { name: 'convict', value: 'convict' }, { name: 'ts-node-dev', value: 'ts-node-dev', checked: true }, { name: 'winston', value: 'winston', checked: true }, { name: 'joi', value: 'joi' }, { name: 'amqp', value: 'amqp' }, { name: 'mqtt', value: 'mqtt' }, ], message: mP() + 'Additional Packages:' }, additionalObjects)); promptArray['project-testing-dependencies'] = yield checkbox(Object.assign({ choices: ['mocha', 'chai-http', 'nyc', 'cypress', 'jest', 'vitest'], message: mP() + 'Testing Packages:' }, additionalObjects)); promptArray['project-database-driver'] = yield checkbox(Object.assign({ choices: ['mongoose', 'typeorm', 'mysql', 'mysql2', 'mongodb', 'redis'], message: mP() + 'Database Driver:' }, additionalObjects)); promptArray['project-ncu-packages'] = yield confirm(Object.assign({ message: mP() + 'Run ncu (npm-check-updates) to force-install all latest package versions? (MAY BREAK EXAMPLE FILES):', default: false }, additionalObjects)); promptArray['project-npm-install-packages'] = yield confirm(Object.assign({ message: mP() + 'Run npm install to install dependencies?', default: false }, additionalObjects)); try { spawn('git', ['--version']); promptArray['project-git-init'] = yield confirm(Object.assign({ message: mP() + 'Run git init to initialize git?', default: false }, additionalObjects)); } catch (e) { } promptArray['project-idea'] = yield checkbox(Object.assign({ choices: ['prettier', 'eslint'], message: mP() + 'Select .idea Folder Config files settings:' }, additionalObjects)); return promptArray; }); }