const fs = require('fs'); const cp = require('child_process'); const yaml = require('yamljs'); var registry = {}; //registry of mods downloaded var mods = fs.readFileSync("./mods.yaml", 'utf-8'); mods = yaml.parse(mods); var oldRegistry = fs.readFileSync("/root/mcserver/modRegistry.yaml", 'utf-8'); oldRegistry = yaml.parse(oldRegistry); var modList = mods.mod_list; var modDownloads = mods.mod_downloads; modList.forEach((ele, idx, arr) => { if (Object.keys(oldRegistry).includes(ele)) { return; } let link = modDownloads[ele]; let modinfo = { modName: "", link: link } if (link == "client"){ modinfo.modName = "*" + ele; return; } let output = cp.execSync("cd /root/mcserver/mods && wget --content-disposition -nc " + link).toString('utf-8'); //change dir and download mod console.log(output); try { modinfo.modName = output.match(/(["'])(?:(?=(\\?))\2.)*?\1/)[0];//kill myself? modinfo.modName = modinfo.modName.substring(1, modinfo.modName.length - 1); } catch{ modinfo.modName = "*" + ele; } console.log("\n\n\n\n\n\n" + modinfo.modName + "\n\n\n\n\n\n"); registry[ele] = modinfo; }); fs.writeFileSync("/root/mcserver/modRegistry.yaml", yaml.stringify(registry));