2017-03-27 22:29:44 +02:00
|
|
|
// requirements
|
|
|
|
const progress = require('progress');
|
|
|
|
const readline = require('readline');
|
2017-03-28 14:54:51 +02:00
|
|
|
const util = require('./util');
|
2017-03-27 22:29:44 +02:00
|
|
|
|
|
|
|
// print logo
|
|
|
|
function printLogo() {
|
|
|
|
console.log(' _ _ _ __ __ ');
|
|
|
|
console.log(' | |__ __ _ __| |__ _ ___ _ _ /_\\ | \\/ |');
|
|
|
|
console.log(' | \'_ \\\/ _` \/ _` \/ _` / -_) \'_\/ _ \\| |\\/| |');
|
|
|
|
console.log(' |_.__\/\\__,_\\__,_\\__, \\___|_|\/_\/ \\_\\_| |_|');
|
2017-03-28 15:39:37 +02:00
|
|
|
console.log(' |___/ \n');
|
2017-03-27 22:29:44 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// display a confirmation prompt
|
|
|
|
function askForConfirmation(message, confirms, callback) {
|
|
|
|
const line = readline.createInterface({
|
|
|
|
input: process.stdin,
|
|
|
|
output: process.stdout
|
|
|
|
});
|
|
|
|
message += ' [';
|
|
|
|
for (let counter = 0, length = confirms.length; counter < length; counter++) {
|
|
|
|
if (counter > 0) {
|
|
|
|
message += '/' + confirms[counter];
|
|
|
|
} else {
|
|
|
|
message += confirms[counter];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
message += ']';
|
|
|
|
line.question(message + '\n', function (answer) {
|
2017-03-28 13:50:31 +02:00
|
|
|
line.close();
|
2017-03-27 22:29:44 +02:00
|
|
|
if (confirms.indexOf(answer) === -1) {
|
2017-03-28 14:54:51 +02:00
|
|
|
return callback('aborted by user, answered \'' + answer + '\'');
|
2017-03-27 22:29:44 +02:00
|
|
|
}
|
|
|
|
callback();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// create a ascii progressbar
|
|
|
|
function createProgressBar(total) {
|
|
|
|
return new progress(':bar | progress: :current/:total (:percent) | elapsed: :elapseds | eta: :etas', {
|
|
|
|
total: total,
|
|
|
|
width: 32
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// shutdown
|
2017-03-28 14:54:51 +02:00
|
|
|
function exit(err, timestamp) {
|
2017-03-28 15:39:37 +02:00
|
|
|
let message = 'exiting'
|
|
|
|
if (timestamp) {
|
|
|
|
message += ' after ' + util.getTimeDiff(timestamp) + ' seconds';
|
|
|
|
}
|
|
|
|
console.log(message);
|
2017-03-27 22:29:44 +02:00
|
|
|
if (err) {
|
|
|
|
console.error(err);
|
|
|
|
process.exit(1);
|
|
|
|
}
|
|
|
|
process.exit(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
// api
|
|
|
|
exports.printLogo = printLogo;
|
|
|
|
exports.askForConfirmation = askForConfirmation;
|
|
|
|
exports.createProgressBar = createProgressBar;
|
|
|
|
exports.exit = exit;
|