diff --git a/main.js b/main.js index 9ede0b5313d3fc69126e8737a82dbb2fa8a45a28..75d72cb0fa216338094befd5a13920e2f75d198b 100644 --- a/main.js +++ b/main.js @@ -9,6 +9,8 @@ const db = require.main.require("./common/db.js"); const lkt = require.main.require("./common/lkt.js"); var tail = require('tail').Tail; var client; /* Sub process for the express server */ +var lektor; /* Sub process, the lektord player */ +var lektor_closed = false; /* Is lektord closed? */ var myDb = new db("/home/kara/kara.db"); @@ -47,8 +49,11 @@ ipcMain.on('close-app', (evt, arg) => { }) app.on("quit", () => { - logger.info("Send SIGTERM to express process and tailler process"); + logger.info("Send SIGTERM to express process, lektord and tailler process"); client.kill("SIGTERM"); + if (! lektor_closed) { + lektor.kill("SIGTERM"); + } }); /********************************* @@ -59,6 +64,7 @@ app.on('ready', () => { logger.info("Main window is ready"); createInstanceWindow(); client = fork('client/main.js'); + lektor = spawn("lektord", ["-F"]); globalShortcut.register('CommandOrControl+D', () => { var win = BrowserWindow.getFocusedWindow(); @@ -79,6 +85,33 @@ app.on('ready', () => { focused.webContents.openDevTools(); } }); + + lektor.stderr.on("data", (data) => { + data.toString().split(/\r?\n/).forEach( (line) => { + var line = line.trim(); + if (!line) + return; + switch (line[0]) { + case '.': + logger.info(line); + break; + case '*': + logger.warn(line); + break; + case '!': + logger.error(line); + break; + default: + logger.debug(line); + break; + } + }); + }); + lektor.on("close", (code) => { + logger.warn(`Lektor exited with code ${code}`); + lektor_closed = true; + app.quit(); + }); }); /*********************************