Files
NTSH-CameraRunner/src/Reboot.ts
2025-10-22 22:08:30 +02:00

57 lines
1.6 KiB
TypeScript

import { exec } from 'child_process';
export function reboot(): Promise<{ succeed: boolean; message?: string }> {
if (process.platform === 'win32') {
return rebootWindows();
} else if (process.platform === 'linux') {
return rebootLinux();
}
return Promise.resolve({
succeed: false,
message: 'Platform not supported',
});
}
function rebootWindows(): Promise<{ succeed: boolean; message?: string }> {
return new Promise<{ succeed: boolean; message?: string }>(
(resolve, reject) => {
exec('shutdown /r /t 3', (error, stdout, stderr) => {
if (error) {
console.error(
`Error shutting down Windows: ${error.message}`
);
return resolve({ succeed: false, message: error.message });
}
if (stderr) {
console.error(`Error shutting down Windows: ${stderr}`);
return resolve({ succeed: false, message: stderr });
}
console.log(`Windows shutdown command executed: ${stdout}`);
resolve({ succeed: true });
});
}
);
}
function rebootLinux(): Promise<{ succeed: boolean; message?: string }> {
return new Promise<{ succeed: boolean; message?: string }>(
(resolve, reject) => {
exec('shutdown -r now', (error, stdout, stderr) => {
if (error) {
console.error(
`Error shutting down Linux: ${error.message}`
);
return resolve({ succeed: false, message: error.message });
}
if (stderr) {
console.error(`Error shutting down Linux: ${stderr}`);
return resolve({ succeed: false, message: stderr });
}
console.log(`Linux shutdown command executed: ${stdout}`);
resolve({ succeed: true });
});
}
);
}