48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
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 (process.argv[2] != "overwrite"){
|
|
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));
|