1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | 'use strict'
|
10 |
|
11 | const argx = require('argx')
|
12 | const yesno = require('yesno')
|
13 | const co = require('co')
|
14 |
|
15 | let warnActions = () => '[ape-asking] actions are now deprecated. Use promise insetead.'
|
16 |
|
17 |
|
18 | function 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 |
|
42 | askYesNo.DEFAULT_MSG = 'Are you sure ? (y/N) '
|
43 |
|
44 | module.exports = askYesNo
|