Skip to content
This repository has been archived by the owner on Jan 2, 2025. It is now read-only.

Commit

Permalink
Start daemon as function, after squirrel check
Browse files Browse the repository at this point in the history
  • Loading branch information
ericvicenti committed Oct 16, 2023
1 parent 48652b8 commit 30b7b19
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 61 deletions.
126 changes: 67 additions & 59 deletions frontend/apps/desktop/src/daemon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
4 changes: 2 additions & 2 deletions frontend/apps/desktop/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'

Expand All @@ -36,7 +36,7 @@ if (IS_PROD_DESKTOP) {

initPaths()

mainDaemon
const mainDaemon = startMainDaemon()

Menu.setApplicationMenu(mainMenu)

Expand Down

0 comments on commit 30b7b19

Please sign in to comment.