Skip to content

Commit 17d70e5

Browse files
authored
cli: refactor out cli.promptForInput (#300)
1 parent beccfee commit 17d70e5

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

lib/cli.js

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,9 @@ class CLI {
2727
this.SPINNER_STATUS = SPINNER_STATUS;
2828
}
2929

30-
prompt(question, defaultAnswer = true) {
31-
const option =
32-
`[${(defaultAnswer ? 'Y' : 'y')}/${(defaultAnswer ? 'n' : 'N')}]`;
33-
this.separator();
34-
const promptText = `${chalk.bold.cyan('?')} ${question} ${option} `;
30+
promptForInput(question) {
3531
return new Promise((resolve, reject) => {
36-
read({prompt: promptText}, (err, answer) => {
32+
read({prompt: question}, (err, answer) => {
3733
if (err) {
3834
this.log(`\nCanceled: ${err.message}`);
3935
reject(new Error(IGNORE));
@@ -43,19 +39,27 @@ class CLI {
4339
reject(new Error(IGNORE));
4440
return;
4541
}
46-
const trimmed = answer.toLowerCase().trim();
47-
if (!trimmed) {
48-
resolve(defaultAnswer);
49-
return;
50-
} else if (trimmed === 'y') {
51-
resolve(true);
52-
return;
53-
}
54-
resolve(false);
42+
resolve(answer);
5543
});
5644
});
5745
}
5846

47+
async prompt(question, defaultAnswer = true) {
48+
const option =
49+
`[${(defaultAnswer ? 'Y' : 'y')}/${(defaultAnswer ? 'n' : 'N')}]`;
50+
this.separator();
51+
const promptText = `${chalk.bold.cyan('?')} ${question} ${option} `;
52+
53+
const answer = await this.promptForInput(promptText);
54+
const trimmed = answer.toLowerCase().trim();
55+
if (!trimmed) {
56+
return defaultAnswer;
57+
} else if (trimmed === 'y') {
58+
return true;
59+
}
60+
return false;
61+
}
62+
5963
startSpinner(text) {
6064
this.spinner.text = text;
6165
this.spinner.start();

0 commit comments

Comments
 (0)