2021-02-11 21:31:41 +08:00

84 lines
2.1 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _chalk = require('chalk');
var _chalk2 = _interopRequireDefault(_chalk);
var _cli = require('../utils/cli');
var _webpack = require('../utils/webpack');
var _consts = require('../utils/consts');
var _logUpdate = require('../utils/log-update');
var _logUpdate2 = _interopRequireDefault(_logUpdate);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const logUpdate = new _logUpdate2.default(); /* eslint-disable no-console */
let lastRender = Date.now();
class FancyReporter {
allDone() {
logUpdate.done();
}
done(context) {
this._renderStates(context.statesArray);
if (context.hasErrors) {
logUpdate.done();
}
}
progress(context) {
if (Date.now() - lastRender > 50) {
this._renderStates(context.statesArray);
}
}
_renderStates(statesArray) {
lastRender = Date.now();
const renderedStates = statesArray.map(c => this._renderState(c)).join('\n\n');
logUpdate.render('\n' + renderedStates + '\n');
}
_renderState(state) {
const color = (0, _cli.colorize)(state.color);
let line1;
let line2;
if (state.progress >= 0 && state.progress < 100) {
// Running
line1 = [color(_consts.BULLET), color(state.name), (0, _cli.renderBar)(state.progress, state.color), state.message, `(${state.progress || 0}%)`, _chalk2.default.grey(state.details[0] || ''), _chalk2.default.grey(state.details[1] || '')].join(' ');
line2 = state.request ? ' ' + _chalk2.default.grey((0, _cli.ellipsisLeft)((0, _webpack.formatRequest)(state.request), logUpdate.columns)) : '';
} else {
let icon = ' ';
if (state.hasErrors) {
icon = _consts.CROSS;
} else if (state.progress === 100) {
icon = _consts.TICK;
} else if (state.progress === -1) {
icon = _consts.CIRCLE_OPEN;
}
line1 = color(`${icon} ${state.name}`);
line2 = _chalk2.default.grey(' ' + state.message);
}
return line1 + '\n' + line2;
}
}
exports.default = FancyReporter;