Override logs for electron-packager properly

This commit is contained in:
Jia Hao 2016-03-13 20:12:45 +08:00
parent 517cfd7df7
commit 013e988391
2 changed files with 37 additions and 6 deletions

View File

@ -8,6 +8,7 @@ import ProgressBar from 'progress';
import optionsFactory from './../options/optionsMain';
import iconBuild from './iconBuild';
import helpers from './../helpers/helpers';
import PackagerConsole from './../helpers/packagerConsole';
import buildApp from './buildApp';
const copy = ncp.ncp;
@ -30,6 +31,9 @@ function buildMain(options, callback) {
const tmpObj = tmp.dirSync({unsafeCleanup: true});
const tmpPath = tmpObj.name;
// todo check if this is still needed on later version of packager
const packagerConsole = new PackagerConsole();
const bar = new ProgressBar(' :task [:bar] :percent', {
complete: '=',
incomplete: ' ',
@ -74,15 +78,12 @@ function buildMain(options, callback) {
// maybe skip passing icon parameter to electron packager
const packageOptions = maybeNoIconOption(options);
// suppress 'Packaging app for...' from electron-packager
// todo check if this is still needed on later version of packager
const consoleError = console.error;
console.error = () => {};
packagerConsole.override();
packager(packageOptions, (error, appPathArray) => {
// restore console.error
console.error = consoleError;
packagerConsole.restore();
// pass options which still contains the icon to waterfall
callback(error, options, appPathArray);
@ -103,7 +104,10 @@ function buildMain(options, callback) {
callback(error, appPath);
});
}
], callback);
], (error, appPath) => {
packagerConsole.playback();
callback(error, appPath);
});
}
/**

View File

@ -0,0 +1,27 @@
class PackagerConsole {
constructor() {
this.logs = [];
}
_log(...messages) {
this.logs.push(...messages);
}
override() {
this.consoleError = console.error;
// need to bind because somehow when _log() is called this refers to console
console.error = this._log.bind(this);
}
restore() {
console.error = this.consoleError;
}
playback() {
console.log(this.logs.join(' '));
}
}
export default PackagerConsole;