Yorking it

This commit is contained in:
cirroskais 2024-03-03 21:22:02 -05:00
parent 0c3ebe75ba
commit fc6608d57a
No known key found for this signature in database
GPG key ID: 5FC73EBF2678E33D
2 changed files with 43 additions and 7 deletions

View file

@ -1,4 +1,5 @@
const package = require("../package.json"); const package = require("../package.json");
const { rm } = require("fs/promises");
const logger = require("./lib/logger.js"); const logger = require("./lib/logger.js");
const args = require("./lib/args.js"); const args = require("./lib/args.js");
const storage = require("./lib/storage.js"); const storage = require("./lib/storage.js");
@ -24,9 +25,7 @@ async function main() {
logger.success("Remote:", remoteVersion); logger.success("Remote:", remoteVersion);
if (remoteVersion <= localVersion) { if (remoteVersion <= localVersion) {
logger.info( logger.info("Local is higher or equal to remote; there is nothing to do.");
"Local is higher or equal to remote; there is nothing to do."
);
return process.exit(0); return process.exit(0);
} }
@ -37,7 +36,7 @@ async function main() {
let additions = []; let additions = [];
for (let i = 0; i < remoteMods.length; i++) { for (let i = 0; i < remoteMods.length; i++) {
let remoteMod = remoteMods[i]; const remoteMod = remoteMods[i];
let found = false; let found = false;
for (let ii = 0; ii < localMods.length; ii++) { for (let ii = 0; ii < localMods.length; ii++) {
@ -50,7 +49,7 @@ async function main() {
let removals = []; let removals = [];
for (let i = 0; i < localMods.length; i++) { for (let i = 0; i < localMods.length; i++) {
let localMod = localMods[i]; const localMod = localMods[i];
let found = false; let found = false;
for (let ii = 0; ii < remoteMods.length; ii++) { for (let ii = 0; ii < remoteMods.length; ii++) {
@ -61,8 +60,37 @@ async function main() {
if (!found) removals.push(localMod); if (!found) removals.push(localMod);
} }
console.log("Additions", additions); logger.success("Additions:", additions.length);
console.log("Removals", removals); logger.success("Removals:", removals.length);
for (let i = 0; i < additions.length; i++) {
const { name, modId, fileId } = additions[i];
const response = await server.getMod(config.host, modId, fileId);
const filename = response.url.split("/")[response.url.split("/").length - 1];
Bun.write(filename, await response.blob());
let data = storage.read();
data.mods.push({ name, path: filename });
storage.write(data);
logger.success("Downloaded:", name);
}
for (let i = 0; i < removals.length; i++) {
const { name, path } = removals[i];
await rm(path);
let data = storage.read();
data.mods = data.mods.filter((_) => _.name !== name);
storage.write(data);
logger.success("Removed:", name);
}
logger.success("Done!");
} }
main(); main();

View file

@ -7,3 +7,11 @@ exports.getAllMods = async (host) => {
const request = await fetch(host + "/getallmods"); const request = await fetch(host + "/getallmods");
return await request.json(); return await request.json();
}; };
exports.getMod = async (host, modId, fileId) => {
const querystring = new URLSearchParams();
querystring.set("modId", modId);
querystring.set("fileId", fileId);
return await fetch(host + "/download?" + querystring.toString());
};