Files
bower/lib/renderers/JsonRenderer.js

56 lines
1.2 KiB
JavaScript

function JsonRenderer() {
this._nrLogs = 0;
}
JsonRenderer.prototype.end = function (data) {
if (this._nrLogs) {
process.stderr.write(']\n');
}
if (data) {
process.stdout.write(this._stringify(data) + '\n');
}
};
JsonRenderer.prototype.error = function (err) {
var message = err.message;
err.id = err.code || 'error';
err.level = 'error';
err.data = err.data || {};
// Need to set message again because it is
// not enumerable in some cases
delete err.message;
err.message = message;
this.log(err);
this.end();
};
JsonRenderer.prototype.log = function (log) {
if (!this._nrLogs) {
process.stderr.write('[');
} else {
process.stderr.write(', ');
}
process.stderr.write(this._stringify(log));
this._nrLogs++;
};
JsonRenderer.prototype.updateAvailable = function () {};
// -------------------------
JsonRenderer.prototype._stringify = function (log) {
// To json
var str = JSON.stringify(log, null, ' ');
// Remove colors in case some log has colors..
str = str.replace(/\x1B\[\d+m/g, '');
return str;
};
module.exports = JsonRenderer;