Compare commits

..

4 Commits

Author SHA1 Message Date
e2938843b8 only installs cursemod with exact name match 2021-01-21 22:33:34 +01:00
2d1de103d8 modPath utils function
returns modPath from a mod object
2021-01-21 22:06:33 +01:00
54cfb222b9 moved functions out the main function
improves readebility
2021-01-21 21:23:09 +01:00
68b9f56abd fixed curse dep counter 2021-01-21 17:07:21 +01:00
3 changed files with 115 additions and 103 deletions

View File

@ -1,21 +1,30 @@
let mods_lock;
function main() {
const { http, https } = require('follow-redirects'); const { http, https } = require('follow-redirects');
const fs = require("fs"); const fs = require("fs");
const util = require("./util.js");
let mods_lock;
let downloadStarted = false; let downloadStarted = false;
let dep = new Map(); let dep = new Map();
function main() {
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); let i = 0;
while(result[i].name !== mod) {
++i;
if(i === result.length) {
console.log(`cursemod ${mod} not found`);
return;
}
}
resolveDep(result[i].id, downloadMods);
}); });
}); });
}
var resolveDepRecursionCount = []; var resolveDepRecursionCount = 0;
function resolveDep(modId, callback, index) { function resolveDep(modId, callback) {
if(index === undefined) index = resolveDepRecursionCount.push(0) - 1; ++resolveDepRecursionCount;
++resolveDepRecursionCount[index];
getData(`${modId}/files`, (files) => { getData(`${modId}/files`, (files) => {
let rightVersion; let rightVersion;
for(let i = files.length - 1; i >= 0; --i) { for(let i = files.length - 1; i >= 0; --i) {
@ -26,11 +35,11 @@ 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, index); resolveDep(mod.addonId, callback);
}); });
--resolveDepRecursionCount[index]; --resolveDepRecursionCount;
if(resolveDepRecursionCount[index] == 0) callback(); if(resolveDepRecursionCount == 0) callback();
}); });
} }
@ -104,11 +113,11 @@ function main() {
}); });
file.on('error', (err) => { // Handle errors file.on('error', (err) => { // Handle errors
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;

View File

@ -2,6 +2,7 @@ const git = require("gift");
const childProcess = require("child_process"); const childProcess = require("child_process");
const fs = require("fs"); const fs = require("fs");
const g2js = require('gradle-to-js/lib/parser'); const g2js = require('gradle-to-js/lib/parser');
const util = require("./util.js");
let modsLock; let modsLock;
let globCallback; let globCallback;
let loopCounter = 0; let loopCounter = 0;
@ -34,7 +35,7 @@ function main () {
}); });
deleteMods.forEach((mod, url) => { deleteMods.forEach((mod, url) => {
modsLock.delete(url); modsLock.delete(url);
fs.unlink(modPath(mod.filename), (err) => { fs.unlink(util.modPath(mod), (err) => {
if(err) throw err; if(err) throw err;
}); });
}); });
@ -58,14 +59,13 @@ function build(repo, repoPath, gitRepo) {
fs.readFile(`${repoPath}/gradle.properties`, "utf-8", (err, data) => { fs.readFile(`${repoPath}/gradle.properties`, "utf-8", (err, data) => {
if(err) throw err; if(err) throw err;
g2js.parseText(data).then((gradleProp) => { g2js.parseText(data).then((gradleProp) => {
let modFile = `${gradleProp.archives_base_name}-${gradleProp.mod_version}.jar`; if(newLock.filename != null) fs.unlink(util.modPath(newLock), (err) => {
if(newLock.filename != null) fs.unlink(`mods/${newLock.filename}`, (err) => {
if(err) throw err; if(err) throw err;
}); });
fs.copyFile(`${buildPath}/${modFile}`, `mods/${modFile}`, (err) => { newLock.filename = `${gradleProp.archives_base_name}-${gradleProp.mod_version}.jar`;
fs.copyFile(`${buildPath}/${newLock.filename}`, util.modPath(newLock), (err) => {
if(err) throw err; if(err) throw err;
}); });
newLock.filename = modFile;
cbDecrease(); cbDecrease();
}); });
}); });
@ -83,10 +83,6 @@ function mayCb() {
if(loopCounter <= 0) globCallback("git", Object.fromEntries(modsLock)); if(loopCounter <= 0) globCallback("git", Object.fromEntries(modsLock));
} }
function modPath(filename) {
return `mods/${filename}`;
}
module.exports = (mods_lock_p, cb) => { module.exports = (mods_lock_p, cb) => {
globCallback = cb; globCallback = cb;
modsLock = mods_lock_p; modsLock = mods_lock_p;

7
src/util.js Normal file
View File

@ -0,0 +1,7 @@
function modPath(mod) {
return `mods${mod.filename}`;
}
module.exports = {
modPath: modPath
}