From 0735aa2db4304a72e126db932e75c020df7b8f52 Mon Sep 17 00:00:00 2001 From: Danielv123 Date: Sun, 5 Nov 2017 17:50:14 +0100 Subject: [PATCH] More work on listing mods nicely with node client.js manager --- client.js | 12 ++++++++---- lib/manager/modManager.js | 26 +++++++++++--------------- package-lock.json | 13 +++++++++++++ package.json | 1 + 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/client.js b/client.js index 39a156da..4b195905 100644 --- a/client.js +++ b/client.js @@ -123,10 +123,14 @@ if (!command || command == "help" || command == "--help") { displayLines.forEach(line => console.log(line)); process.exit(1); } else if (command == "manage"){ - console.log("Launching mod manager"); - - modManager.listMods(instance); - + // console.log("Launching mod manager"); + const action = process.argv[4]; + if(instance && action && action == "list"){ + modManager.listMods(instance); + } else { + console.log('Usage:'); + console.log('node client.js manage [instance, "shared"] ["list"]'); + } // process.exit(1); } else if (command == "delete") { if (!process.argv[3]) { diff --git a/lib/manager/modManager.js b/lib/manager/modManager.js index 381ccecf..1bb0345b 100644 --- a/lib/manager/modManager.js +++ b/lib/manager/modManager.js @@ -1,4 +1,5 @@ const rightpad = require("right-pad"); +const asTable = require("as-table").configure({delimiter: ' | '}); const factorioAPI = require("node-factorio-api"); const fileOps = require("./../fileOps.js"); @@ -15,8 +16,15 @@ module.exports.listMods = function(instance){ require_ownership: false }).then(token => { console.log("authed") - factorioAPI.getModsFromSaves().then(list => { - console.log(list) + /**/ + factorioAPI.getInstalledMods().then(mods => { + console.log("Currently installed:"); + console.log(asTable(mods)); + factorioAPI.getModsFromSaves().then(list => { + console.log("Mods used in save:"); + console.log(JSON.stringify(list)) + console.log(asTable(list[0].mods)) + }); }); }); } else { @@ -29,19 +37,7 @@ module.exports.listMods = function(instance){ require_ownership: false }).then(() => { factorioAPI.getInstalledMods().then(mods => { - let modNames = ["Name:"]; - let modVersions = ["Version:"]; - mods.forEach(mod=>{ - modNames.push(mod.name); - modVersions.push(mod.version); - }); - let longestName = modNames.reduce(function (a, b) { return a.length > b.length ? a : b; }); - let longestVersion = modVersions.reduce(function (a, b) { return a.length > b.length ? a : b; }); - - console.log("| "+rightpad("Name:", longestName.length, " ")+" | "+rightpad("Version:", longestVersion.length, " ")+" |"); - mods.forEach(mod => { - console.log("| "+rightpad(mod.name, longestName.length, " ")+" | "+rightpad(mod.version, longestVersion.length, " ")+" |"); - }); + console.log(asTable(mods)); }); }); } diff --git a/package-lock.json b/package-lock.json index 1eab07d4..d808804f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -177,6 +177,14 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "as-table": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.31.tgz", + "integrity": "sha1-0AGAAk7LttGnRxUN91HTcWrqgWY=", + "requires": { + "printable-characters": "1.0.38" + } + }, "asap": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", @@ -3206,6 +3214,11 @@ } } }, + "printable-characters": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.38.tgz", + "integrity": "sha1-du+ErM/X+DZvtxOPuSRmqRbVmbw=" + }, "private": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", diff --git a/package.json b/package.json index 6cf03940..04fd01d2 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "author": "Danielv123", "license": "ISC", "dependencies": { + "as-table": "^1.0.31", "averaged-timeseries": "^1.4.0", "body-parser": "^1.18.2", "canvasjs": "^1.8.1",