stratumn-cli
Version:
CLI tools for Stratumn
54 lines (47 loc) • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = question;
// http://stackoverflow.com/questions/24037545/how-to-hide-password-in-the-nodejs-console
function hidden(rl, query, cb) {
function handleData(c) {
var char = c + '';
switch (char) {
case '\n':
case '\r':
case '\u0004':
break;
default:
process.stdout.write('\x1B[2K\x1B[200D' + query + Array(rl.line.length + 1).join('*'));
break;
}
}
process.stdin.on('data', handleData);
rl.question(query, function (value) {
/*eslint-disable */
rl.history = rl.history.slice(1);
/*eslint-enable */
process.stdin.removeListener('data', handleData);
cb(value);
});
}
function question(rl, query, name) {
var store = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
var opts = arguments.length <= 4 || arguments[4] === undefined ? {} : arguments[4];
return new Promise(function (resolve) {
var ask = opts.hidden ? hidden.bind(null, rl) : rl.question.bind(rl);
ask(query, function (answer) {
if (opts.required !== false && !answer) {
question(rl, query, name, store, opts).then(resolve);
return;
}
if (answer) {
/*eslint-disable */
store[name] = answer;
/*eslint-enable */
}
resolve(answer);
});
});
}