[WIP] package vencord as asar

This commit is contained in:
Vendicated 2024-07-18 04:34:09 +02:00
parent 80b493d7a8
commit 6cf2e0c2a5
No known key found for this signature in database
GPG key ID: D66986BAF75ECF18
6 changed files with 108 additions and 49 deletions

View file

@ -26,10 +26,10 @@ import gitHash from "~git-hash";
import gitRemote from "~git-remote";
import { get } from "../utils/simpleGet";
import { serializeErrors, VENCORD_FILES } from "./common";
import { ASAR_FILE, serializeErrors } from "./common";
const API_BASE = `https://api.github.com/repos/${gitRemote}`;
let PendingUpdates = [] as [string, string][];
let PendingUpdate: string | null = null;
async function githubGet(endpoint: string) {
return get(API_BASE + endpoint, {
@ -65,22 +65,28 @@ async function fetchUpdates() {
if (hash === gitHash)
return false;
data.assets.forEach(({ name, browser_download_url }) => {
if (VENCORD_FILES.some(s => name.startsWith(s))) {
PendingUpdates.push([name, browser_download_url]);
}
});
const asset = data.assets.find(a => a.name === ASAR_FILE);
PendingUpdate = asset.browser_download_url;
return true;
}
async function applyUpdates() {
await Promise.all(PendingUpdates.map(
async ([name, data]) => writeFile(
join(__dirname, name),
await get(data)
)
));
PendingUpdates = [];
if (!PendingUpdate) return true;
const data = await get(PendingUpdate);
if (__dirname.endsWith(".asar")) {
await writeFile(__dirname, data);
} else { // legacy plain folder install
await writeFile(join(__dirname, "../vencord.asar"), data);
await writeFile(__filename, '// legacy install workaround\n\nrequire("../vencord.asar");');
}
PendingUpdate = null;
return true;
}