From c02bb6d58ffa4ceb9e070dd1c4df2c0e9f4c1bd1 Mon Sep 17 00:00:00 2001 From: Danielv123 Date: Fri, 4 May 2018 17:50:09 +0200 Subject: [PATCH] #85 made instance directory configurable in config.json --- client.js | 24 ++++++++++++------------ config.json | 1 + lib/getInstances.js | 3 ++- lib/manager/modManager.js | 6 +++--- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/client.js b/client.js index 7f66dfdd..4e5b15ac 100644 --- a/client.js +++ b/client.js @@ -25,8 +25,8 @@ const configManager = require("./lib/manager/configManager.js"); var config = require('./config'); var global = {}; -if (!fs.existsSync("./instances/")) { - fs.mkdirSync("instances"); +if (!fs.existsSync(config.instanceDirectory)) { + fs.mkdirSync(config.instanceDirectory); } if (!fs.existsSync("./sharedPlugins/")) { fs.mkdirSync("sharedPlugins"); @@ -35,7 +35,7 @@ if (!fs.existsSync("./sharedMods/")) { fs.mkdirSync("sharedMods"); } const instance = process.argv[3]; -const instancedirectory = './instances/' + instance; +const instancedirectory = config.instanceDirectory + '/' + instance; const command = process.argv[2]; // Set the process title, shows up as the title of the CMD window on windows @@ -99,7 +99,7 @@ if (!command || command == "help" || command == "--help") { console.error("node client.js manage"); process.exit(1); } else if (command == "list") { - let instanceNames = fileOps.getDirectoriesSync("./instances/"); + let instanceNames = fileOps.getDirectoriesSync(config.instanceDirectory); instanceNames.unshift("Name:"); let longestInstanceName = 0; // determine longest instance name @@ -122,7 +122,7 @@ if (!command || command == "help" || command == "--help") { if(instance.includes("Name:")){ factorioPort = "Port:" } else { - factorioPort = require("./instances/"+instance+"/config").factorioPort; + factorioPort = require(config.instanceDirectory+"/"+instance+"/config").factorioPort; } factorioPorts.push(factorioPort); }); @@ -201,8 +201,8 @@ if (!command || command == "help" || command == "--help") { if (!process.argv[3]) { console.error("Usage: node client.js delete [instance]"); process.exit(1); - } else if (typeof process.argv[3] == "string" && fs.existsSync("./instances/" + process.argv[3]) && process.argv[3] != "/" && process.argv[3] != "") { - fileOps.deleteFolderRecursiveSync("./instances/" + process.argv[3]); + } else if (typeof process.argv[3] == "string" && fs.existsSync(config.instanceDirectory+"/" + process.argv[3]) && process.argv[3] != "/" && process.argv[3] != "") { + fileOps.deleteFolderRecursiveSync(config.instanceDirectory+"/" + process.argv[3]); console.log("Deleted instance " + process.argv[3]); process.exit(1); } else { @@ -241,7 +241,7 @@ if (!command || command == "help" || command == "--help") { // fs.symlinkSync('../../../sharedMods', instancedirectory + "/mods", 'junction') // This is broken because it can only take a file as first argument, not a folder fs.writeFileSync(instancedirectory + "/config.ini", "[path]\r\n\ read-data=__PATH__executable__/../../data\r\n\ -write-data=__PATH__executable__/../../../instances/" + instance + "\r\n\ +write-data=__PATH__executable__/../../../"+config.instanceDirectory+"/" + instance + "\r\n\ "); // this line is probably not needed anymore but Im not gonna remove it @@ -288,7 +288,7 @@ write-data=__PATH__executable__/../../../instances/" + instance + "\r\n\ console.log("Instance created!"); } else if (command == "start" && typeof instance == "string" && instance != "/" && fs.existsSync(instancedirectory)) { // Exit if no instance specified (it should be, just a safeguard); - if(instancedirectory != "./instances/undefined"){ + if(instancedirectory != config.instanceDirectory+"/undefined"){ var instanceconfig = require(instancedirectory + '/config'); instanceconfig.unique = stringUtils.hashCode(instanceconfig.clientPassword); if(process.env.FACTORIOPORT){ @@ -682,7 +682,7 @@ function instanceManagement() { } }); var form = req.form(); - form.append('file', fs.createReadStream("./instances/"+instance+"/mods/"+mod)); + form.append('file', fs.createReadStream(config.instanceDirectory+"/"+instance+"/mods/"+mod)); } else { console.log("Not sending mod: " + mod + " to master because config.uploadModsToMaster is not enabled") } @@ -967,7 +967,7 @@ function hashMods(instanceName, callback) { } let hashedMods = []; /*let mods = fs.readdirSync("./sharedMods/")*/ - let instanceMods = fs.readdirSync("./instances/"+instanceName+"/mods/"); + let instanceMods = fs.readdirSync(config.instanceDirectory+"/"+instanceName+"/mods/"); if(instanceMods.length == 0){ callback({}); // there are no mods installed, return an empty object } @@ -977,7 +977,7 @@ function hashMods(instanceName, callback) { } } for(let i=0; i 0){ if(term.includes("mods.factorio.com/mods/")){ // https://mods.factorio.com/mods/Danielv123/ChooChoo @@ -186,7 +186,7 @@ module.exports.removeMod = function removeMod(term, instance, force = false){ if(instance == "shared"){ // modDirectory has to end in / var modDirectory = "sharedMods/"; } else { - var modDirectory = "instances/"+instance+"/instanceMods/"; + var modDirectory = config.instanceDirectory+"/"+instance+"/instanceMods/"; } if(term && typeof term == "string" && term.length > 0){ let mods = fs.readdirSync(modDirectory);