UNPKG

1.03 kBJavaScriptView Raw
1/**
2 * @memberof module:ape-asking/lib
3 * @function askYesNo
4 * @param {string} [msg=askYesNo.DEFAULT_MSG] - Ask message.
5 * @param {object} actions - Actions for each answer.
6 * @returns {Promise.<boolean>}
7 */
8
9'use strict'
10
11const argx = require('argx')
12const yesno = require('yesno')
13const co = require('co')
14
15let warnActions = () => '[ape-asking] actions are now deprecated. Use promise insetead.'
16
17/** @lends askYesNo */
18function askYesNo (msg) {
19 let args = argx(arguments)
20 msg = args.shift('string') || askYesNo.DEFAULT_MSG
21
22 let actions = args.pop('object') || {}
23 let yes = actions.yes || args.shift('function')
24 let no = actions.no || args.shift('function')
25
26 return co(function * () {
27 let sure = yield new Promise((resolve) =>
28 yesno.ask(msg, false, (sure) => resolve(sure))
29 )
30 if (sure && yes) {
31 warnActions()
32 yes()
33 }
34 if (!sure && no) {
35 warnActions()
36 no()
37 }
38 return sure
39 })
40}
41
42askYesNo.DEFAULT_MSG = 'Are you sure ? (y/N) '
43
44module.exports = askYesNo