UNPKG

snips-sam

Version:

The Snips Assistant Manager

50 lines (41 loc) 1.4 kB
import { Stream } from './stream'; import { flatMap } from '../utils/functions'; const inquirer = require('inquirer'); export class Prompt { public stream: Stream; constructor(stream: Stream) { this.stream = stream; } waitForKeypress = async (question: string, completionBlock: () => any) => { this.stream.loading(question); return this.waitForInput(completionBlock); } promptList = async (name: string, question: string, answers: string[]): Promise<string> => { return inquirer.prompt([ { name, type: 'list', message: question, choices: answers, }, ]); } promptQuestions = async (questions: any[]) => { const questionsFlat = flatMap(questions, (value, index, array) => value); return inquirer.prompt(questionsFlat); } waitForInput = async (preBlock: () => any) => { if (process.stdin.setRawMode !== undefined) { process.stdin.setRawMode(true); } return new Promise((resolve) => { process.stdin.on('data', (input) => { if (process.stdin.setRawMode !== undefined) { process.stdin.setRawMode(false); } preBlock(); return resolve(input); }); }); } }