diff --git a/frontend/apps/desktop/src/daemon.ts b/frontend/apps/desktop/src/daemon.ts index 27e81de565..3a0b074050 100644 --- a/frontend/apps/desktop/src/daemon.ts +++ b/frontend/apps/desktop/src/daemon.ts @@ -67,64 +67,72 @@ const daemonArguments = [ lndhubFlags, ] -logger.info('Launching daemon:', goDaemonExecutablePath, daemonArguments) -const daemonProcess = spawn(goDaemonExecutablePath, daemonArguments, { - // daemon env - cwd: devProjectRoot, - env: { - ...process.env, - }, - stdio: 'pipe', -}) -let expectingDaemonClose = false -daemonProcess.on('error', (err) => { - logger.error('Error:', err) -}) -daemonProcess.on('close', (code, signal) => { - if (!expectingDaemonClose) { - updateGoDaemonState({ - t: 'error', - message: 'Service Error: ' + lastStderr, - }) - logger.error('Closed:', code, signal) - } -}) -daemonProcess.on('spawn', () => { - // logger.info('Spawned') -}) - -daemonProcess.stdout.on('data', (data) => { - const multilineString = data.toString() - // multilineString.split('\n').forEach((msg) => msg && logger.info(msg)) -}) -let lastStderr = '' -daemonProcess.stderr.on('data', (data) => { - const multilineString = data.toString() - lastStderr = multilineString - // multilineString.split('\n').forEach((msg) => msg && logger.warn(msg)) - if (multilineString.match('INFO') && multilineString.match('DaemonStarted')) { - updateGoDaemonState({t: 'ready'}) + +export function startMainDaemon() { + logger.info('Launching daemon:', goDaemonExecutablePath, daemonArguments) + + const daemonProcess = spawn(goDaemonExecutablePath, daemonArguments, { + // daemon env + cwd: devProjectRoot, + env: { + ...process.env, + }, + stdio: 'pipe', + }) + let expectingDaemonClose = false + daemonProcess.on('error', (err) => { + logger.error('Error:', err) + }) + daemonProcess.on('close', (code, signal) => { + if (!expectingDaemonClose) { + updateGoDaemonState({ + t: 'error', + message: 'Service Error: ' + lastStderr, + }) + logger.error('Closed:', code, signal) + } + }) + daemonProcess.on('spawn', () => { + // logger.info('Spawned') + }) + + daemonProcess.stdout.on('data', (data) => { + const multilineString = data.toString() + // multilineString.split('\n').forEach((msg) => msg && logger.info(msg)) + }) + let lastStderr = '' + daemonProcess.stderr.on('data', (data) => { + const multilineString = data.toString() + lastStderr = multilineString + // multilineString.split('\n').forEach((msg) => msg && logger.warn(msg)) + if ( + multilineString.match('INFO') && + multilineString.match('DaemonStarted') + ) { + updateGoDaemonState({t: 'ready'}) + } + }) + daemonProcess.stdout.on('error', (err) => { + logger.error('output error:', err) + }) + daemonProcess.stderr.on('error', (err) => { + logger.error('output (stderr) error:', err) + }) + daemonProcess.stdout.on('close', (code, signal) => { + if (!expectingDaemonClose) + logger.error('unexpected stdout close', code, signal) + }) + + app.addListener('will-quit', () => { + log('App will quit') + expectingDaemonClose = true + daemonProcess.kill() + }) + + const mainDaemon = { + httpPort: BACKEND_HTTP_PORT, + grpcPort: BACKEND_GRPC_PORT, + p2pPort: BACKEND_P2P_PORT, } -}) -daemonProcess.stdout.on('error', (err) => { - logger.error('output error:', err) -}) -daemonProcess.stderr.on('error', (err) => { - logger.error('output (stderr) error:', err) -}) -daemonProcess.stdout.on('close', (code, signal) => { - if (!expectingDaemonClose) - logger.error('unexpected stdout close', code, signal) -}) - -app.addListener('will-quit', () => { - log('App will quit') - expectingDaemonClose = true - daemonProcess.kill() -}) - -export const mainDaemon = { - httpPort: BACKEND_HTTP_PORT, - grpcPort: BACKEND_GRPC_PORT, - p2pPort: BACKEND_P2P_PORT, + return mainDaemon } diff --git a/frontend/apps/desktop/src/main.ts b/frontend/apps/desktop/src/main.ts index ae94f8340c..1b8a8fdf19 100644 --- a/frontend/apps/desktop/src/main.ts +++ b/frontend/apps/desktop/src/main.ts @@ -12,7 +12,7 @@ import { trpc, } from './api' import {initPaths} from './app-paths' -import {mainDaemon} from './daemon' +import {startMainDaemon} from './daemon' import {saveCidAsFile} from './save-cid-as-file' import {IS_PROD_DESKTOP, MINTTER_SENTRY_DESKTOP_DSN} from '@mintter/shared' @@ -36,7 +36,7 @@ if (IS_PROD_DESKTOP) { initPaths() -mainDaemon +const mainDaemon = startMainDaemon() Menu.setApplicationMenu(mainMenu)