diff --git a/client.js b/client.js index bceb737e..39a156da 100644 --- a/client.js +++ b/client.js @@ -16,7 +16,7 @@ const getMac = require('getmac').getMac; const objectOps = require("./lib/objectOps.js"); const fileOps = require("./lib/fileOps.js"); const stringUtils = require("./lib/stringUtils.js"); -const modManager = require("./lib/modManager/modManager.js"); +const modManager = require("./lib/manager/modManager.js"); // require config.json var config = require('./config'); @@ -79,9 +79,50 @@ if (!command || command == "help" || command == "--help") { console.error("node client.js download"); process.exit(1); } else if (command == "list") { - console.dir(fileOps.getDirectoriesSync("./instances/")); + let instanceNames = fileOps.getDirectoriesSync("./instances/"); + instanceNames.unshift("Name:"); + let longestInstanceName = 0; + // determine longest instance name + instanceNames.forEach(function(instance){ + if(instance.length > longestInstanceName) longestInstanceName = instance.length; + }); + let displayLines = []; + // push name coloumn to array + instanceNames.forEach(function(instance){ + while(instance.length < longestInstanceName+1){ + instance += " "; + } + displayLines.push("| "+ instance + "|"); + }); + // create port colloumn + let factorioPorts = []; + instanceNames.forEach(function(instance){ + let factorioPort + + if(instance.includes("Name:")){ + factorioPort = "Port:" + } else { + factorioPort = require("./instances/"+instance+"/config").factorioPort; + } + factorioPorts.push(factorioPort); + }); + factorioPorts.forEach((port, index) => { + let longestPort = 0; + factorioPorts.forEach((port, index) => { + if(port.toString().length > longestPort) longestPort = port.toString().length; + }); + while(port.toString().length < longestPort){ + port += " "; + } + factorioPorts[index] = port; + }); + instanceNames.forEach(function(instance, index){ + displayLines[index] += " " + factorioPorts[index] + " |"; + }); + + displayLines.forEach(line => console.log(line)); process.exit(1); -} else if (command == "modManager") { +} else if (command == "manage"){ console.log("Launching mod manager"); modManager.listMods(instance); @@ -108,7 +149,7 @@ if (!command || command == "help" || command == "--help") { if(url) { console.log(url); var file = fs.createWriteStream("sharedMods/"+name); - var request = https.get(url, function(response) { + var req = https.get(url, function(response) { response.pipe(file); console.log("Downloaded "+name); }); diff --git a/lib/modManager/modManager.js b/lib/manager/modManager.js similarity index 60% rename from lib/modManager/modManager.js rename to lib/manager/modManager.js index 37cda42e..5ffc52c4 100644 --- a/lib/modManager/modManager.js +++ b/lib/manager/modManager.js @@ -28,3 +28,21 @@ module.exports.listMods = function(instance){ console.log(JSON.parse(res.getBody())) */ } + +// 'https://api.github.com/repos/Danielv123/factorioClusterioMod/releases' +module.exports.downloadFromGitURL = function(url){ + console.log("Downloading mod from "+url); + // get JSON data about releases + let res = syncRequest('GET', url, {"headers":{"User-Agent":"Please don't require setting a user agent"}}); + let downloadUrl = JSON.parse(res.getBody())[0].assets[0].browser_download_url; + let name = JSON.parse(res.getBody())[0].assets[0].name; + console.log(JSON.parse(res.getBody())) + if(downloadUrl) { + console.log(downloadUrl); + var file = fs.createWriteStream("sharedMods/"+name); + var request = https.get(downloadUrl, function(response) { + response.pipe(file); + console.log("Downloaded "+name); + }); + } +} diff --git a/lib/modManager/modManager.spec.js b/lib/manager/modManager.spec.js similarity index 100% rename from lib/modManager/modManager.spec.js rename to lib/manager/modManager.spec.js