This is the template project that's checked out and configured when you run the bando-up command from ljsthw-bandolier. This is where the code really lives.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bandolier-template/commands/devsvc.js

64 lines
1.8 KiB

import { exec } from "../lib/builderator.js";
export const description = "Runs various services needed for development";
export const options = [
['--stop', `Stop the ${process.platform} OS services.`],
['--start', `Start the ${process.platform} OS services (the default).`],
['--noexit', `When used in other commands, don't call process.exit.`],
['--os <platform>', 'Force the process.platform to specific one']
]
const windows = (opts) => {
if(opts.stop) {
console.log("Stopping redis...");
exec("wsl -u root /etc/init.d/redis-server stop");
} else {
console.log("Starting redis...")
exec("wsl -u root /etc/init.d/redis-server start");
}
}
const darwin = (opts) => {
if(opts.stop) {
console.log("Stopping pm2...");
exec("npx pm2 stop scripts/osx.config.cjs");
} else {
console.log("Starting pm2...")
exec("npx pm2 start scripts/osx.config.cjs");
console.log("Use npx pm2 for more options.");
}
}
const linux = (opts) => {
if(opts.os === "linux") {
darwin(opts);
} else {
console.error("On Linux you should run redis-server using systemctl or similar. If you really want to use pm2 to manage redis then rerun this command with: --os linux");
process.exit(1);
}
}
export const main = (opts) => {
const platform = opts.os ? opts.os : process.platform;
if(process.platform === "win32") {
windows(opts);
} else if(process.platform === "linux") {
linux(opts);
} else if(process.platform === "darwin") {
darwin(opts);
} else {
console.error(`ERROR: invalid OS ${platform} given, must be win32, linux, or darwin`);
if(opts.noexit) {
throw new Error("invalid OS error.");
} else {
process.exit(1);
}
}
if(!opts.noexit) process.exit(0); // for some reason exec hangs on windows
}