Fix PM2 handling, at least for POSIX-compliant shells

This commit is contained in:
00Fjongl 2024-08-07 18:56:05 -05:00
parent 4f79f92de9
commit 20a32288ad

View file

@ -69,10 +69,10 @@ for (let i = 2; i < process.argv.length; i++)
clearTimeout(timeoutId); clearTimeout(timeoutId);
if (response === "Error") throw new Error("Server is unresponsive."); if (response === "Error") throw new Error("Server is unresponsive.");
} catch (e) { } catch (e) {
console.error(e); if (!(e instanceof TypeError)) console.error(e);
await unlink(shutdown); await unlink(shutdown);
} }
if (config.production) if (config.production && !process.argv.slice(i + 1).includes("kill"))
exec("npm run pm2-stop", (error, stdout) => { exec("npm run pm2-stop", (error, stdout) => {
if (error) throw error; if (error) throw error;
console.log(stdout); console.log(stdout);
@ -99,12 +99,13 @@ for (let i = 2; i < process.argv.length; i++)
break; break;
} }
// Forcibly kill all node processes and fully reset PM2. To be used for debugging. // Kill all node processes and fully reset PM2. To be used for debugging. The
// npm run pm2-nuke is built into the command because, if handled in Node, it
// will not wait for PM2 to actually finish resetting before it closes itself.
case "kill": case "kill":
exec("npm run pm2-nuke", (error, stdout) => {console.log(stdout)});
if (process.platform === "win32") if (process.platform === "win32")
exec("taskkill /F /IM node*", (error, stdout) => {console.log(stdout)}); exec("npm run pm2-nuke ; taskkill /F /IM node*", (error, stdout) => {console.log(stdout)});
else exec("pkill node", (error, stdout) => {console.log(stdout)}); else exec("npm run pm2-nuke ; pkill node", (error, stdout) => {console.log(stdout)});
break; break;
// No default case. // No default case.