aboutsummaryrefslogtreecommitdiff
path: root/src/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.js')
-rw-r--r--src/utils.js239
1 files changed, 122 insertions, 117 deletions
diff --git a/src/utils.js b/src/utils.js
index 061c3f1..2e81bdf 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -37,7 +37,9 @@ var settings = {
excludes: [
"ns_startup_args.txt",
"ns_startup_args_dedi.txt"
- ]
+ ],
+
+ originkill: false
}
// Logs into the dev tools of the renderer
@@ -58,11 +60,11 @@ if (fs.existsSync("viper.json")) {
// Validates viper.json
try {
json = JSON.parse(conf);
- }catch (e) {
+ } catch (e) {
invalidsettings = true;
}
- settings = {...settings, ...json};
+ settings = { ...settings, ...json };
settings.zip = path.join(settings.gamepath + "/northstar.zip");
let args = path.join(settings.gamepath, "ns_startup_args.txt");
@@ -95,7 +97,7 @@ async function isGameRunning() {
break
}
- if (i == procs.length - 1) {resolve(false)}
+ if (i == procs.length - 1) { resolve(false) }
}
});
});
@@ -103,44 +105,44 @@ async function isGameRunning() {
//Check if origin client is running
async function isOriginRunning() {
- return new Promise(resolve => {
- let procs = ["origin.exe"]; //check this, probably not right
- let cmd = (() => {
- switch (process.platform) {
- case "linux": return "ps -A";
- case "win32": return "tasklist";
- }
- })();
-
- exec(cmd, (err, stdout) => {
- procs.forEach( proc => {
- if (stdout.includes(proc)) {
- resolve(true);
- return;
- }
- resolve(false);
- });
+ return new Promise(resolve => {
+ let procs = ["Origin.exe", "OriginClientService.exe"];
+ let cmd = (() => {
+ switch (process.platform) {
+ case "linux": return "ps -A";
+ case "win32": return "tasklist";
+ }
+ })();
+
+ exec(cmd, (err, stdout) => {
+ procs.forEach(proc => {
+ if (stdout.includes(proc)) {
+ resolve(true);
+ return;
+ }
+ resolve(false);
+ });
+ });
});
- });
}
//Kill origin client
async function killOrigin() {
- return Promise(resolve => {
- let proc = "origin.exe" ; //need to match above
- let cmd = (() => {
- switch (process.platform) {
- case "linux": return "killall " + proc;
- case "win32": return "taskkill /IM " + proc + " /F";
- }
- })();
-
- exec(cmd, (err, stdout) => {
- //do some checking here maybe? idk we're going to be exiting so maybe we should
- //just try and fail silently if we don't find shit
- resolve(true);
+ return new Promise(resolve => {
+ let proc = "Origin.exe"; //I'm pretty sure we only have to kill this one
+ let cmd = (() => {
+ switch (process.platform) {
+ case "linux": return "killall " + proc;
+ case "win32": return "taskkill /IM " + proc + " /F";
+ }
+ })();
+
+ exec(cmd, (err, stdout) => {
+ //do some checking here maybe? idk we're going to be exiting so maybe we should
+ //just try and fail silently if we don't find shit
+ resolve(true);
+ });
});
- });
}
// Handles auto updating Northstar.
@@ -148,7 +150,7 @@ async function killOrigin() {
// It uses isGameRunning() to ensure it doesn't run while the game is
// running, as that may have all kinds of issues.
function handleNorthstarUpdating() {
- if (! settings.nsupdate || ! fs.existsSync("viper.json") || settings.gamepath.length === 0) {
+ if (!settings.nsupdate || !fs.existsSync("viper.json") || settings.gamepath.length === 0) {
return;
}
@@ -163,7 +165,7 @@ function handleNorthstarUpdating() {
if (await isGameRunning()) {
console.log(lang("cli.autoupdates.gamerunning"));
new Notification({
- title: lang("gui.nsupdate.gaming.title"),
+ title: lang("gui.nsupdate.gaming.title"),
body: lang("gui.nsupdate.gaming.body")
}).show();
} else {
@@ -175,7 +177,7 @@ function handleNorthstarUpdating() {
}
setTimeout(
- _checkForUpdates,
+ _checkForUpdates,
15 * 60 * 1000
// interval in between each update check
// by default 15 minutes.
@@ -201,10 +203,10 @@ async function setpath(win, forcedialog) {
modpath = path.join(settings.gamepath, "R2Northstar/mods");
}
- if (! win) { // CLI
+ if (!win) { // CLI
setGamepath(cli.param("setpath"));
} else { // GUI
- if (! forcedialog) {
+ if (!forcedialog) {
function setGamepath(folder, forcedialog) {
settings.gamepath = folder;
settings.zip = path.join(settings.gamepath + "/northstar.zip");
@@ -223,12 +225,12 @@ async function setpath(win, forcedialog) {
}
// Fallback to manual selection
- dialog.showOpenDialog({properties: ["openDirectory"]}).then(res => {
+ dialog.showOpenDialog({ properties: ["openDirectory"] }).then(res => {
if (res.canceled) {
ipcMain.emit("newpath", null, false);
return;
}
- if (! fs.existsSync(path.join(res.filePaths[0], "Titanfall2.exe"))) {
+ if (!fs.existsSync(path.join(res.filePaths[0], "Titanfall2.exe"))) {
ipcMain.emit("wrong-path");
return;
}
@@ -237,7 +239,7 @@ async function setpath(win, forcedialog) {
cli.exit();
return;
- }).catch(err => {console.error(err)})
+ }).catch(err => { console.error(err) })
}
}
@@ -248,15 +250,15 @@ async function setpath(win, forcedialog) {
// You can also pass a settings object to the function and it'll try and
// merge it together with the already existing settings
function saveSettings(obj = {}) {
- if (invalidsettings) {return false}
+ if (invalidsettings) { return false }
- settings = {...settings, ...obj};
+ settings = { ...settings, ...obj };
if (fs.existsSync(settings.gamepath)) {
fs.writeFileSync(path.join(settings.gamepath, "ns_startup_args.txt"), settings.nsargs);
}
- fs.writeFileSync(app.getPath("appData") + "/viper.json", JSON.stringify({...settings, ...obj}));
+ fs.writeFileSync(app.getPath("appData") + "/viper.json", JSON.stringify({ ...settings, ...obj }));
}
// Returns the current Northstar version
@@ -313,7 +315,7 @@ restoreExcludedFiles();
// <file>.excluded, then rename them back after the extraction. The
// unzip module does not support excluding files directly.
async function update() {
- if (! gamepathExists()) {return}
+ if (!gamepathExists()) { return }
ipcMain.emit("ns-update-event", "cli.update.checking");
console.log(lang("cli.update.checking"));
@@ -332,7 +334,7 @@ async function update() {
} else {
if (version != "unknown") {
console.log(lang("cli.update.current"), version);
- };
+ };
console.log(lang("cli.update.downloading") + ":", latestAvailableVersion);
ipcMain.emit("ns-update-event", "cli.update.downloading");
}
@@ -365,19 +367,19 @@ async function update() {
console.log(lang("cli.update.downloaddone"));
// Extracts the zip, this is the part where we're actually
// installing Northstar.
- fs.createReadStream(settings.zip).pipe(unzip.Extract({path: settings.gamepath}))
- .on("finish", () => {
- fs.writeFileSync(path.join(settings.gamepath, "ns_version.txt"), latestAvailableVersion);
- ipcMain.emit("get-version");
-
- restoreExcludedFiles();
-
- ipcMain.emit("gui-getmods");
- ipcMain.emit("ns-update-event", "cli.update.uptodate.short");
- winLog(lang("gui.update.finished"));
- console.log(lang("cli.update.finished"));
- cli.exit();
- })
+ fs.createReadStream(settings.zip).pipe(unzip.Extract({ path: settings.gamepath }))
+ .on("finish", () => {
+ fs.writeFileSync(path.join(settings.gamepath, "ns_version.txt"), latestAvailableVersion);
+ ipcMain.emit("get-version");
+
+ restoreExcludedFiles();
+
+ ipcMain.emit("gui-getmods");
+ ipcMain.emit("ns-update-event", "cli.update.uptodate.short");
+ winLog(lang("gui.update.finished"));
+ console.log(lang("cli.update.finished"));
+ cli.exit();
+ })
})
})
}
@@ -390,7 +392,7 @@ async function update() {
function updatevp(autoinstall) {
const { autoUpdater } = require("electron-updater");
- if (! autoUpdater.isUpdaterActive()) {
+ if (!autoUpdater.isUpdaterActive()) {
if (settings.nsupdate) {
handleNorthstarUpdating();
}
@@ -403,7 +405,7 @@ function updatevp(autoinstall) {
});
}
- autoUpdater.on("error", (info) => {cli.exit(1)});
+ autoUpdater.on("error", (info) => { cli.exit(1) });
autoUpdater.on("update-not-available", (info) => {
// only check for NS updates if Viper itself has no updates and
// if NS auto updates is enabled.
@@ -429,7 +431,7 @@ function launch(version) {
}
process.chdir(settings.gamepath);
- switch(version) {
+ switch (version) {
case "vanilla":
console.log(lang("general.launching"), "Vanilla...");
run(path.join(settings.gamepath + "/Titanfall2.exe"));
@@ -471,8 +473,8 @@ const mods = {
let enabled = [];
let disabled = [];
- if (! fs.existsSync(modpath)) {
- fs.mkdirSync(path.join(modpath), {recursive: true});
+ if (!fs.existsSync(modpath)) {
+ fs.mkdirSync(path.join(modpath), { recursive: true });
return {
enabled: [],
disabled: [],
@@ -491,9 +493,10 @@ const mods = {
Version: "unknown",
Name: "unknown",
FolderName: file,
- ...mod}
+ ...mod
+ }
- obj.Disabled = ! mods.modfile().get(obj.Name);
+ obj.Disabled = !mods.modfile().get(obj.Name);
let manifestfile = path.join(modpath, file, "manifest.json");
if (fs.existsSync(manifestfile)) {
@@ -542,7 +545,7 @@ const mods = {
for (let i = 0; i < list.length; i++) {
if (list[i].Name == mod) {
return list[i];
- } else {continue}
+ } else { continue }
}
return false;
@@ -556,11 +559,11 @@ const mods = {
let modpath = path.join(settings.gamepath, "R2Northstar/mods");
let file = path.join(modpath, "..", "enabledmods.json");
- if (! fs.existsSync(modpath)) {
- fs.mkdirSync(path.join(modpath), {recursive: true});
+ if (!fs.existsSync(modpath)) {
+ fs.mkdirSync(path.join(modpath), { recursive: true });
}
- if (! fs.existsSync(file)) {
+ if (!fs.existsSync(file)) {
fs.writeFileSync(file, "{}");
}
@@ -587,7 +590,7 @@ const mods = {
toggle: (mod) => {
let data = JSON.parse(repair(fs.readFileSync(file, "utf8")));
if (data[mod] != undefined) {
- data[mod] = ! data[mod];
+ data[mod] = !data[mod];
} else {
data[mod] = false;
}
@@ -653,19 +656,19 @@ const mods = {
return true;
}
- if (! fs.existsSync(mod)) {return notamod()}
+ if (!fs.existsSync(mod)) { return notamod() }
if (fs.statSync(mod).isDirectory()) {
winLog(lang("gui.mods.installing"));
files = fs.readdirSync(mod);
- if (fs.existsSync(path.join(mod, "mod.json")) &&
+ if (fs.existsSync(path.join(mod, "mod.json")) &&
fs.statSync(path.join(mod, "mod.json")).isFile()) {
if (fs.existsSync(path.join(modpath, modname))) {
- fs.rmSync(path.join(modpath, modname), {recursive: true});
+ fs.rmSync(path.join(modpath, modname), { recursive: true });
}
let copydest = path.join(modpath, modname);
- if (typeof destname == "string") {copydest = path.join(modpath, destname)}
+ if (typeof destname == "string") { copydest = path.join(modpath, destname) }
copy(mod, copydest);
copy(manifestfile, path.join(copydest, "manifest.json"));
@@ -679,7 +682,7 @@ const mods = {
fs.statSync(path.join(mod, files[i], "mod.json")).isFile()) {
mods.install(path.join(mod, files[i]));
- if (mods.install(path.join(mod, files[i]))) {return true};
+ if (mods.install(path.join(mod, files[i]))) { return true };
}
}
}
@@ -692,52 +695,52 @@ const mods = {
winLog(lang("gui.mods.extracting"));
let cache = path.join(app.getPath("userData"), "Archives");
if (fs.existsSync(cache)) {
- fs.rmSync(cache, {recursive: true});
- fs.mkdirSync(path.join(cache, "mods"), {recursive: true});
+ fs.rmSync(cache, { recursive: true });
+ fs.mkdirSync(path.join(cache, "mods"), { recursive: true });
} else {
- fs.mkdirSync(path.join(cache, "mods"), {recursive: true});
+ fs.mkdirSync(path.join(cache, "mods"), { recursive: true });
}
try {
if (mod.replace(/.*\./, "").toLowerCase() == "zip") {
- fs.createReadStream(mod).pipe(unzip.Extract({path: cache}))
- .on("finish", () => {
- setTimeout(() => {
- let manifest = path.join(cache, "manifest.json");
- if (fs.existsSync(manifest)) {
- files = fs.readdirSync(path.join(cache, "mods"));
- if (fs.existsSync(path.join(cache, "mods/mod.json"))) {
- if (mods.install(path.join(cache, "mods"), require(manifest).name, manifest, true)) {
- return true;
- }
- } else {
- for (let i = 0; i < files.length; i++) {
- let mod = path.join(cache, "mods", files[i]);
- if (fs.statSync(mod).isDirectory()) {
- setTimeout(() => {
- if (mods.install(mod, false, manifest)) {return true};
- }, 1000)
+ fs.createReadStream(mod).pipe(unzip.Extract({ path: cache }))
+ .on("finish", () => {
+ setTimeout(() => {
+ let manifest = path.join(cache, "manifest.json");
+ if (fs.existsSync(manifest)) {
+ files = fs.readdirSync(path.join(cache, "mods"));
+ if (fs.existsSync(path.join(cache, "mods/mod.json"))) {
+ if (mods.install(path.join(cache, "mods"), require(manifest).name, manifest, true)) {
+ return true;
+ }
+ } else {
+ for (let i = 0; i < files.length; i++) {
+ let mod = path.join(cache, "mods", files[i]);
+ if (fs.statSync(mod).isDirectory()) {
+ setTimeout(() => {
+ if (mods.install(mod, false, manifest)) { return true };
+ }, 1000)
+ }
}
- }
- if (files.length == 0) {
- ipcMain.emit("failed-mod");
- return notamod();
+ if (files.length == 0) {
+ ipcMain.emit("failed-mod");
+ return notamod();
+ }
}
- }
- return notamod();
- }
+ return notamod();
+ }
- if (mods.install(cache)) {
- installed();
- } else {return notamod()}
- }, 1000)
- });
+ if (mods.install(cache)) {
+ installed();
+ } else { return notamod() }
+ }, 1000)
+ });
} else {
return notamod();
}
- }catch(err) {return notamod()}
+ } catch (err) { return notamod() }
}
},
@@ -751,7 +754,7 @@ const mods = {
let modlocation = path.join(tmp, "/mod.zip");
if (fs.existsSync(tmp)) {
- if (! fs.statSync(tmp).isDirectory()) {
+ if (!fs.statSync(tmp).isDirectory()) {
fs.rmSync(tmp);
}
} else {
@@ -794,12 +797,12 @@ const mods = {
}
let disabled = path.join(modpath, "disabled");
- if (! fs.existsSync(disabled)) {
+ if (!fs.existsSync(disabled)) {
fs.mkdirSync(disabled);
}
let modName = mods.get(mod).FolderName;
- if (! modName) {
+ if (!modName) {
console.log("error: " + lang("cli.mods.cantfind"));
cli.exit(1);
return;
@@ -817,7 +820,7 @@ const mods = {
manifestname = require(path.join(modPath, "manifest.json")).name;
}
- fs.rmSync(modPath, {recursive: true});
+ fs.rmSync(modPath, { recursive: true });
console.log(lang("cli.mods.removed"));
cli.exit();
ipcMain.emit("gui-getmods");
@@ -856,7 +859,7 @@ const mods = {
}
mods.modfile().toggle(mod);
- if (! fork) {
+ if (!fork) {
console.log(lang("cli.mods.toggled"));
cli.exit();
}
@@ -889,6 +892,8 @@ module.exports = {
getNSVersion,
getTF2Version,
isGameRunning,
+ isOriginRunning,
+ killOrigin,
gamepathExists,
handleNorthstarUpdating,
setlang: (lang) => {