feat(daemon): Persist desired process states and add daemon restart command
This commit is contained in:
@@ -80,6 +80,48 @@ export function registerDaemonCommand(smartcli: plugins.smartcli.Smartcli) {
|
||||
}
|
||||
break;
|
||||
|
||||
case 'restart':
|
||||
try {
|
||||
console.log('Restarting TSPM daemon...');
|
||||
await tspmIpcClient.stopDaemon(true);
|
||||
|
||||
// Reuse the manual start logic from 'start'
|
||||
const statusAfterStop = await tspmIpcClient.getDaemonStatus();
|
||||
if (statusAfterStop) {
|
||||
console.warn('Daemon still appears to be running; proceeding to start anyway.');
|
||||
}
|
||||
|
||||
console.log('Starting TSPM daemon manually...');
|
||||
const { spawn } = await import('child_process');
|
||||
const daemonScript = plugins.path.join(
|
||||
paths.packageDir,
|
||||
'dist_ts',
|
||||
'daemon.js',
|
||||
);
|
||||
const daemonProcess = spawn(process.execPath, [daemonScript], {
|
||||
detached: true,
|
||||
stdio: process.env.TSPM_DEBUG === 'true' ? 'inherit' : 'ignore',
|
||||
env: { ...process.env, TSPM_DAEMON_MODE: 'true' },
|
||||
});
|
||||
daemonProcess.unref();
|
||||
console.log(`Started daemon with PID: ${daemonProcess.pid}`);
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 2000));
|
||||
const newStatus = await tspmIpcClient.getDaemonStatus();
|
||||
if (newStatus) {
|
||||
console.log('✓ TSPM daemon restarted successfully');
|
||||
console.log(` PID: ${newStatus.pid}`);
|
||||
} else {
|
||||
console.warn('\n⚠️ Warning: Daemon restart attempted but status is unavailable.');
|
||||
}
|
||||
|
||||
await tspmIpcClient.disconnect();
|
||||
} catch (error) {
|
||||
console.error('Error restarting daemon:', (error as any).message || String(error));
|
||||
process.exit(1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'start-service':
|
||||
// This is called by systemd - start the daemon directly
|
||||
console.log('Starting TSPM daemon for systemd service...');
|
||||
@@ -135,6 +177,7 @@ export function registerDaemonCommand(smartcli: plugins.smartcli.Smartcli) {
|
||||
console.log('Usage: tspm daemon <command>');
|
||||
console.log('\nCommands:');
|
||||
console.log(' start Start the TSPM daemon');
|
||||
console.log(' restart Restart the TSPM daemon');
|
||||
console.log(' stop Stop the TSPM daemon');
|
||||
console.log(' status Show daemon status');
|
||||
break;
|
||||
|
Reference in New Issue
Block a user