navy
Version:
Quick and powerful development environments using Docker and Docker Compose
85 lines (65 loc) • 2.07 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isDriverLogging = isDriverLogging;
exports.log = log;
exports.startDriverLogging = startDriverLogging;
exports.stopDriverLogging = stopDriverLogging;
var _cliSpinners = require("cli-spinners");
var _chalk = _interopRequireDefault(require("chalk"));
let _isDriverLogging = false;
let _spinnerInterval = null;
let _spinnerIndex = 0;
let _message = null;
function _redraw(opts = {}) {
let symbol = _chalk.default.cyan(_cliSpinners.dots.frames[_spinnerIndex]);
if (opts.success === true) {
symbol = _chalk.default.green('✔');
} else if (opts.success === false) {
symbol = _chalk.default.red('•');
}
if (!process.stdout.isTTY) {
if (opts.success) {
console.log();
console.log(symbol, 'SUCCESS');
} else if (opts.success === false) {
console.log();
console.log(symbol, 'FAILURE');
}
return;
}
process.stdout.write(' \n');
process.stdout.write(` ${symbol} ${opts.success === false ? _chalk.default.red(_message, 'FAILED') : _message}\n`);
process.stdout.cursorTo(0);
process.stdout.moveCursor(0, -2);
}
function startDriverLogging(message) {
_isDriverLogging = true;
_message = message;
_redraw();
_spinnerInterval = setInterval(() => {
_spinnerIndex++;
if (_spinnerIndex >= _cliSpinners.dots.frames.length) {
_spinnerIndex = 0;
}
_redraw();
}, _cliSpinners.dots.interval);
}
function stopDriverLogging(opts = {}) {
if (!isDriverLogging()) return;
_isDriverLogging = false;
clearInterval(_spinnerInterval);
_redraw({
success: opts.success != null ? opts.success : true
});
if (process.stdout.isTTY) console.log('\n\n');
}
function isDriverLogging() {
return _isDriverLogging;
}
function log(message) {
if (!isDriverLogging()) return;
process.stdout.write(_chalk.default.dim(message));
}