UNPKG

1.39 kBJavaScriptView Raw
1var _ = require('lodash');
2var async = require('async');
3
4module.exports = function(mockAnswers) {
5 var askedQuestions = {};
6
7 return {
8 prompt: function(questions, callback) {
9 var answers = {};
10
11 async.eachSeries(questions, function(question, cb) {
12 var shouldAsk = true;
13 if (_.isFunction(question.when)) {
14 if (question.when(answers) === false)
15 return cb();
16 }
17
18 if (!askedQuestions[question.name])
19 askedQuestions[question.name] = 1;
20 else
21 askedQuestions[question.name]++;
22
23 var mockAnswer = mockAnswers[question.name];
24 if (_.isUndefined(mockAnswer))
25 return cb();
26
27 if (_.isFunction(mockAnswer))
28 mockAnswer = mockAnswer(answers);
29
30 // if (_.isFunction(question.validate)) {
31 // var valid = question.validate(mockAnswer);
32 // if (valid !== true) {
33 // errors.push()
34 // return cb(new Error(_.isString(valid) ? valid : "error"));
35 // }
36 // }
37
38 answers[question.name] = mockAnswer;
39 cb();
40 }, function() {
41 callback(answers);
42 });
43 },
44
45 wasAsked: function(name) {
46 return _.has(askedQuestions, name);
47 },
48
49 askedCount: function(name) {
50 if (!askedQuestions[name])
51 return 0;
52 else
53 return askedQuestions[name];
54 }
55 };
56};