diff --git a/package.json b/package.json index 9b7414b..a7a0851 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "autod": "^3.0.1", "egg-bin": "^4.8.1", "egg-ci": "^1.11.0", + "enquirer": "^2.2.0", "eslint": "^5.10.0", "eslint-config-egg": "^7.1.0", "lodash.ismatch": "^4.4.0", diff --git a/test/fixtures/prompt-enquirer.js b/test/fixtures/prompt-enquirer.js new file mode 100755 index 0000000..cdac7ec --- /dev/null +++ b/test/fixtures/prompt-enquirer.js @@ -0,0 +1,36 @@ +#!/usr/bin/env node + +'use strict'; + +const { prompt } = require('enquirer'); +const { ReadStream } = require('tty'); + +prompt.on('prompt', prompt => { + // console.log(prompt); + process.send && process.send({ type: 'prompt' }); +}); + +async function run() { + const stdin = new ReadStream(process.stdin.fd); + process.stdin.pipe(stdin); + const answers = await prompt([ + { + type: 'input', + name: 'name', + message: 'What is your name?', + stdin, + }, + { + type: 'select', + name: 'color', + message: 'Pick a flavor', + choices: [ 'apple', 'grape', 'watermelon', 'cherry', 'orange' ], + stdin, + }, + ]); + console.log(answers); + stdin.end(); + process.stdin.end(); +} + +run().catch(console.error); diff --git a/test/index.test.js b/test/index.test.js index d2937f9..b73e35c 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -235,6 +235,17 @@ describe('coffee', () => { .end(done); }); + it.only('should support prompt enquirer', () => { + return coffee.fork(path.join(fixtures, 'prompt-enquirer.js')) + .debug() + .waitForPrompt() + .write('tz\n') + .writeKey('DOWN', 'ENTER') + .expect('stdout', '{ name: \'tz\', color: \'grape\' }') + .expect('code', 0) + .end(); + }); + it('should fork with autoCoverage = true', done => { coffee.fork(path.join(fixtures, 'stdin.js'), null, { autoCoverage: true,