moved functions out the main function
improves readebility
This commit is contained in:
43
src/curse.js
43
src/curse.js
@ -1,19 +1,20 @@
|
||||
let mods_lock;
|
||||
const { http, https } = require('follow-redirects');
|
||||
const fs = require("fs");
|
||||
let downloadStarted = false;
|
||||
let dep = new Map();
|
||||
function main() {
|
||||
const { http, https } = require('follow-redirects');
|
||||
const fs = require("fs");
|
||||
let downloadStarted = false;
|
||||
let dep = new Map();
|
||||
mods_lock = new Map(Object.entries(mods_lock));
|
||||
if(global.config.mods.curse.length === 0) globCallback("curse", {});
|
||||
global.config.mods.curse.forEach(mod => {
|
||||
getData(`search?categoryId=0&gameId=432&gameVersion=${encodeURI(global.config.gameVersion)}&index=0&pageSize=1&searchFilter=${encodeURI(mod)}§ionId=6&sort=0`, (result) => { // resolve projectID
|
||||
getData(`search?categoryId=0&gameId=432&gameVersion=${encodeURI(global.config.gameVersion)}&index=0&pageSize=15&searchFilter=${encodeURI(mod)}§ionId=6&sort=0`, (result) => { // resolve projectID
|
||||
resolveDep(result[0].id, downloadMods);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
var resolveDepRecursionCount = 0;
|
||||
function resolveDep(modId, callback) {
|
||||
var resolveDepRecursionCount = 0;
|
||||
function resolveDep(modId, callback) {
|
||||
++resolveDepRecursionCount;
|
||||
getData(`${modId}/files`, (files) => {
|
||||
let rightVersion;
|
||||
@ -25,15 +26,15 @@ function main() {
|
||||
}
|
||||
dep.set(String(modId), {fileId: rightVersion.id, url: rightVersion.downloadUrl, filename: rightVersion.fileName});
|
||||
rightVersion.dependencies.forEach(mod => {
|
||||
if(mod.type !== 3) return
|
||||
if(mod.type !== 3) return;
|
||||
resolveDep(mod.addonId, callback);
|
||||
});
|
||||
--resolveDepRecursionCount;
|
||||
if(resolveDepRecursionCount == 0) callback();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getData(url, callback) {
|
||||
function getData(url, callback) {
|
||||
https.get(`https://addons-ecs.forgesvc.net/api/v2/addon/${url}`, (resp) => {
|
||||
let data = '';
|
||||
resp.on('data', (chunk) => {
|
||||
@ -43,24 +44,24 @@ function main() {
|
||||
callback(JSON.parse(data));
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function versionMatch(versionArray, gameVersion) {
|
||||
function versionMatch(versionArray, gameVersion) {
|
||||
let gameVersionMatch = false;
|
||||
versionArray.forEach(version => {
|
||||
gameVersionMatch = gameVersionMatch || version == gameVersion;
|
||||
});
|
||||
return gameVersionMatch;
|
||||
}
|
||||
}
|
||||
|
||||
function modloaderMatch(versionArray, modloaderVersion) {
|
||||
function modloaderMatch(versionArray, modloaderVersion) {
|
||||
for(let i = 0; i < versionArray.length; ++i) {
|
||||
if(/^[a-zA-Z]+$/.test(versionArray[i]) && versionArray[i] != modloaderVersion) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function downloadMods() {
|
||||
function downloadMods() {
|
||||
if(!downloadStarted) {
|
||||
downloadStarted = true;
|
||||
globCallback("curse", Object.fromEntries(dep));
|
||||
@ -76,12 +77,12 @@ function main() {
|
||||
if(!dep.has(modId)) fs.unlink(getPath(mod), () => {})
|
||||
});
|
||||
}
|
||||
}
|
||||
function getPath(mod) {
|
||||
}
|
||||
function getPath(mod) {
|
||||
return `mods/${mod.filename}`
|
||||
}
|
||||
}
|
||||
|
||||
function downloadFile(url, dest) {
|
||||
function downloadFile(url, dest) {
|
||||
let file = fs.createWriteStream(dest);
|
||||
console.log(`downloading ${url}`);
|
||||
let request = https.get(url, (response) => {
|
||||
@ -106,8 +107,8 @@ function main() {
|
||||
fs.unlink(dest);
|
||||
throw err;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = function(mods_lock_p, callback) {
|
||||
mods_lock = mods_lock_p;
|
||||
globCallback = callback;
|
||||
|
||||
Reference in New Issue
Block a user