badger-am/lib/cli.js

66 lines
1.9 KiB
JavaScript

// requirements
const progress = require('progress');
const readline = require('readline');
const util = require('./util');
// print logo
function printLogo() {
console.log(' _ _ _ __ __ ');
console.log(' | |__ __ _ __| |__ _ ___ _ _ /_\\ | \\/ |');
console.log(' | \'_ \\\/ _` \/ _` \/ _` / -_) \'_\/ _ \\| |\\/| |');
console.log(' |_.__\/\\__,_\\__,_\\__, \\___|_|\/_\/ \\_\\_| |_|');
console.log(' |___/ \n');
}
// 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) {
line.close();
if (confirms.indexOf(answer) === -1) {
return callback('aborted by user, answered \'' + answer + '\'');
}
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
function exit(err, timestamp) {
let message = 'exiting'
if (timestamp) {
message += ' after ' + util.getTimeDiff(timestamp) + ' seconds';
}
console.log(message);
if (err) {
console.error(err);
process.exit(1);
}
process.exit(0);
}
// api
exports.printLogo = printLogo;
exports.askForConfirmation = askForConfirmation;
exports.createProgressBar = createProgressBar;
exports.exit = exit;