import Inquirer from 'inquirer'; import { IProject, IModel } from 'types'; class InquirerService { public async askForAuthToken(): Promise { return await Inquirer.prompt({ message: 'Copy the token from the browser', type: 'input', name: 'authtoken', validate: (value) => { return Boolean(value); } }).then(x => x.authtoken); } public async askProject(projects: IProject[]): Promise { return await Inquirer.prompt([{ message: 'Please select projects from below', type: 'list', name: 'projectId', choices: projects.map(element => ({ name: element.name, value: element.id, type: 'choice' })), validate: (value) => { return Boolean(value); } }]).then(x => x.projectId); } public async takeInput(label: string, type: 'string' | 'number' | 'boolean' = 'string'): Promise { return await Inquirer.prompt({ name: 'input', message: label, type: 'input', validate: (value) => { if (type === 'string' || type === 'boolean') { return Boolean(value); } return /[0-9]+$/g.test(value); } }).then(x => x.input); } public async askModel(models: IModel[]): Promise { return await Inquirer.prompt([ { message: 'Please select models from below', type: 'list', name: 'modelId', choices: models.map(element => ({ name: element.name, value: element.id, type: 'choice' })), validate: (value) => Boolean(value), } ]).then(x => x.modelId); } } export default new InquirerService();