92 lines
2.7 KiB
JavaScript
92 lines
2.7 KiB
JavaScript
import Config from "../config.mjs";
|
|
import { spawn } from "child_process";
|
|
import path from "path";
|
|
|
|
/**
|
|
* Get the command object for the launch command
|
|
* @returns {CommandModule}
|
|
*/
|
|
export function getCommand() {
|
|
return {
|
|
command: "launch",
|
|
describe: "Launch Foundry VTT",
|
|
builder: yargs => {
|
|
yargs.option("demo", {
|
|
describe: "Launch Foundry VTT in demo mode",
|
|
type: "boolean",
|
|
default: false
|
|
});
|
|
|
|
yargs.option("port", {
|
|
describe: "The port to launch Foundry VTT on",
|
|
type: "number",
|
|
default: 30000
|
|
});
|
|
|
|
yargs.option("world", {
|
|
describe: "The world to launch Foundry VTT with",
|
|
type: "string"
|
|
});
|
|
|
|
yargs.option("noupnp", {
|
|
describe: "Disable UPnP port forwarding",
|
|
type: "boolean",
|
|
default: false
|
|
});
|
|
|
|
yargs.option("noupdate", {
|
|
describe: "Disable automatic update checking",
|
|
type: "boolean",
|
|
default: false
|
|
});
|
|
|
|
yargs.option("adminKey", {
|
|
describe: "The admin key to secure Foundry VTT's Setup screen with",
|
|
type: "string"
|
|
});
|
|
|
|
return yargs;
|
|
},
|
|
handler: async argv => {
|
|
|
|
// Run the command node main.js --debug --port 30000
|
|
// Launch Foundry VTT in debug mode on port 30000
|
|
const { demo, port, world, noupnp, noupdate, adminKey } = argv;
|
|
|
|
// Determine the installation path
|
|
const installPath = Config.instance.get("installPath");
|
|
if ( !installPath ) {
|
|
console.error("The installation path is not set. Use `configure set installPath <path>` to set it. "
|
|
+ "Install paths look like `C:/Program Files/Foundry Virtual Tabletop`");
|
|
process.exitCode = 1;
|
|
return;
|
|
}
|
|
|
|
// Determine the data path
|
|
const dataPath = Config.instance.get("dataPath");
|
|
if ( !dataPath ) {
|
|
console.error("The data path is not set. Use `configure set dataPath <path>` to set it. "
|
|
+ "Data paths look like `C:/Users/Example/AppData/Local/FoundryVTT/Data`");
|
|
process.exitCode = 1;
|
|
return;
|
|
}
|
|
|
|
// Launch Foundry VTT
|
|
const foundry = spawn("node", [
|
|
path.normalize(path.join(installPath, "resources", "app", "main.js")),
|
|
`--dataPath=${dataPath}`,
|
|
`--port=${port}`,
|
|
demo ? "--demo" : "",
|
|
world ? `--world=${world}` : "",
|
|
noupnp ? "--noupnp" : "",
|
|
noupdate ? "--noupdate" : "",
|
|
adminKey ? `--adminKey=${adminKey}` : ""
|
|
]);
|
|
|
|
foundry.stdout.on("data", data => console.log(data.toString()));
|
|
foundry.stderr.on("data", data => console.error(data.toString()));
|
|
foundry.on("close", code => console.log(`Foundry VTT exited with code ${code}`));
|
|
}
|
|
}
|
|
}
|