Files
factorio-clusterio/lib/manager/modManager.js
T

70 lines
2.5 KiB
JavaScript

const rightpad = require("right-pad");
const asTable = require("as-table").configure({delimiter: ' | '});
const factorioAPI = require("node-factorio-api");
const fileOps = require("./../fileOps.js");
const instances = fileOps.getDirectoriesSync("./instances/");
module.exports.listMods = function(instance){
if(instance && instances.includes(instance)){
factorioAPI.init(false, 'instances/'+instance+'/mods', 'instances/'+instance+'/saves', '0.15.37');
console.log("Authenticating to factorio.com...")
factorioAPI.authenticate({
username: 'Danielv123',
token: '53faebce0a608b1195f01dcfd95ee1',
require_ownership: false
}).then(token => {
console.log("authed")
/**/
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 {
// list shared mods in /sharedMods/
factorioAPI.init(false, 'sharedMods/', '', '0.15.37');
console.log("Authenticating to factorio.com...")
factorioAPI.authenticate({
username: 'Danielv123',
token: '53faebce0a608b1195f01dcfd95ee1',
require_ownership: false
}).then(() => {
factorioAPI.getInstalledMods().then(mods => {
console.log(asTable(mods));
});
});
}
// get JSON data about GH releases
/*let res = syncRequest('GET', 'https://api.github.com/repos/Danielv123/factorioClusterioMod/releases', {"headers":{"User-Agent":"Fuck you for requiring user agents!"}});
let url = 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()))
*/
}
// '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);
});
}
}