2018-04-13 23:28:55 -04:00
|
|
|
const {spawn} = require('child_process');
|
|
|
|
const log = require('electron-log');
|
2018-03-29 16:28:14 -04:00
|
|
|
const net = require('net');
|
|
|
|
const port = process.env.PORT ? (process.env.PORT - 100) : 3000;
|
|
|
|
|
|
|
|
process.env.ELECTRON_START_URL = `http://localhost:${port}`;
|
2018-04-13 23:28:55 -04:00
|
|
|
log.transports.file.level = false;
|
2018-03-29 16:28:14 -04:00
|
|
|
|
|
|
|
const client = new net.Socket();
|
|
|
|
|
|
|
|
let startedElectron = false;
|
2018-04-13 23:28:55 -04:00
|
|
|
const tryConnection = () => client.connect({port}, () => {
|
2018-03-29 16:28:14 -04:00
|
|
|
client.end();
|
|
|
|
if (!startedElectron) {
|
2018-04-13 23:28:55 -04:00
|
|
|
log.info('starting electron');
|
2018-03-29 16:28:14 -04:00
|
|
|
startedElectron = true;
|
2018-04-13 23:28:55 -04:00
|
|
|
const instance = spawn('node', ['node_modules/electron/cli.js', '.'], {
|
|
|
|
env: {
|
|
|
|
...process.env,
|
|
|
|
},
|
|
|
|
stdio: 'inherit',
|
|
|
|
});
|
|
|
|
|
|
|
|
instance.on('message', (message, sendHandle) => {
|
|
|
|
console.log(message, sendHandle);
|
|
|
|
});
|
2018-03-29 16:28:14 -04:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
tryConnection();
|
|
|
|
|
|
|
|
client.on('error', (error) => {
|
|
|
|
if (error) {
|
|
|
|
console.error(error);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
setTimeout(tryConnection, 1000);
|
|
|
|
});
|