[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

@ -16,12 +16,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export const VENCORD_FILES = [
IS_DISCORD_DESKTOP ? "patcher.js" : "vencordDesktopMain.js",
IS_DISCORD_DESKTOP ? "preload.js" : "vencordDesktopPreload.js",
IS_DISCORD_DESKTOP ? "renderer.js" : "vencordDesktopRenderer.js",
IS_DISCORD_DESKTOP ? "renderer.css" : "vencordDesktopRenderer.css",
];
export const ASAR_FILE = IS_VESKTOP
? "vesktop.asar"
: "desktop.asar";
export function serializeErrors(func: (...args: any[]) => any) {
return async function () {

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;
}