moved functions out the main function

improves readebility
This commit is contained in:
2021-01-21 21:23:09 +01:00
parent 68b9f56abd
commit 54cfb222b9

View File

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