Support of stderr CRITICAL issues forwarded to app

This commit is contained in:
ziajka 2019-02-20 11:32:54 +01:00
parent 16185d2461
commit cdadbd9140
4 changed files with 39 additions and 15 deletions

View File

@ -67,6 +67,19 @@ function notifyStatus(status) {
ipcMain.emit('local-server-status-events', status);
}
function filterOutput(line) {
const index = line.search('CRITICAL');
if(index > -1) {
return {
isCritical: true,
errorMessage: line.substr(index)
};
}
return {
isCritical: false
}
}
async function stopAll() {
for(var serverName in runningServers) {
let result, error = await stop(serverName);
@ -137,6 +150,16 @@ async function run(server, options) {
};
serverProcess.stdout.on('data', function(data) {
const line = data.toString();
const { isCritical, errorMessage } = filterOutput(line);
if(isCritical) {
notifyStatus({
serverName: server.name,
status: 'stderr',
message: `Server reported error: '${errorMessage}`
});
}
if(logStdout) {
console.log(data.toString());
}
@ -149,17 +172,19 @@ async function run(server, options) {
});
serverProcess.on('exit', (code, signal) => {
if(code > 0) {
notifyStatus({
serverName: server.name,
status: 'errored',
message: `Server '${server.name}' has exited with status='${code}'`
});
}
notifyStatus({
serverName: server.name,
status: 'errored',
message: `Server '${server.name}' has exited with status='${code}'`
});
});
serverProcess.on('error', (err) => {
notifyStatus({
serverName: server.name,
status: 'errored',
message: `Server errored: '${errorMessage}`
});
});
}
@ -183,10 +208,6 @@ ipcMain.on('local-server-run', async function (event, server) {
});
ipcMain.on('before-quit', async function (event) {
console.log(event);
});
if (require.main === module) {
process.on('SIGINT', function() {
console.log("Caught interrupt signal");

View File

@ -63,7 +63,7 @@ function createWindow () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null
mainWindow = null;
});
@ -94,7 +94,7 @@ app.on('activate', function () {
// On OS X it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) {
createWindow()
createWindow();
}
});

View File

@ -32,6 +32,9 @@ export class DefaultLayoutComponent implements OnInit, OnDestroy {
if(serverStatus.status === 'errored') {
this.toasterService.error(serverStatus.message);
}
if(serverStatus.status === 'stderr') {
this.toasterService.error(serverStatus.message);
}
});
// stop servers only when in Electron

View File

@ -5,7 +5,7 @@ import { Subject } from 'rxjs';
export interface ServerStateEvent {
serverName: string;
status: "started" | "errored" | "stopped";
status: "started" | "errored" | "stopped" | "stderr";
message: string;
}