BetterDiscordApp-rauenzi/scripts/inject.js

52 lines
2.7 KiB
JavaScript
Raw Normal View History

const args = process.argv;
const fs = require("fs");
const path = require("path");
const doSanityChecks = require("./validate");
const buildPackage = require("./package");
const useBdRelease = args[2] && args[2].toLowerCase() === "release";
const releaseInput = useBdRelease ? args[3] && args[3].toLowerCase() : args[2] && args[2].toLowerCase();
const release = releaseInput === "canary" ? "Discord Canary" : releaseInput === "ptb" ? "Discord PTB" : "Discord";
const bdPath = useBdRelease ? path.resolve(__dirname, "..", "dist", "betterdiscord.asar") : path.resolve(__dirname, "..", "dist");
const discordPath = (function() {
2021-07-09 00:50:43 +02:00
let resourcePath = "";
if (process.platform === "win32") {
const basedir = path.join(process.env.LOCALAPPDATA, release.replace(/ /g, ""));
if (!fs.existsSync(basedir)) throw new Error(`Cannot find directory for ${release}`);
const version = fs.readdirSync(basedir).filter(f => fs.lstatSync(path.join(basedir, f)).isDirectory() && f.split(".").length > 1).sort().reverse()[0];
2022-12-11 21:00:37 +01:00
// To account for discord_desktop_core-1 or any other number
2022-12-11 21:24:15 +01:00
const coreWrap = fs.readdirSync(path.join(basedir, version, "modules")).filter(e => e.indexOf("discord_desktop_core") === 0).sort().reverse()[0];
2022-12-11 21:00:37 +01:00
resourcePath = path.join(basedir, version, "modules", coreWrap, "discord_desktop_core");
}
2021-07-09 00:50:43 +02:00
else {
2022-12-13 00:53:21 +01:00
let userData = process.env.XDG_CONFIG_HOME ? process.env.XDG_CONFIG_HOME : path.join(process.env.HOME, ".config");
if (process.platform === "darwin") userData = path.join(process.env.HOME, "Library", "Application Support");
2021-07-09 00:50:43 +02:00
const basedir = path.join(userData, release.toLowerCase().replace(" ", ""));
if (!fs.existsSync(basedir)) return "";
const version = fs.readdirSync(basedir).filter(f => fs.lstatSync(path.join(basedir, f)).isDirectory() && f.split(".").length > 1).sort().reverse()[0];
if (!version) return "";
resourcePath = path.join(basedir, version, "modules", "discord_desktop_core");
}
2021-07-09 00:50:43 +02:00
if (fs.existsSync(resourcePath)) return resourcePath;
return "";
})();
doSanityChecks(bdPath);
buildPackage(bdPath);
console.log("");
console.log(`Injecting into ${release}`);
if (!fs.existsSync(discordPath)) throw new Error(`Cannot find directory for ${release}`);
console.log(` ✅ Found ${release} in ${discordPath}`);
2022-12-11 03:59:51 +01:00
const indexJs = path.join(discordPath, "index.js");
if (fs.existsSync(indexJs)) fs.unlinkSync(indexJs);
2022-12-11 03:59:51 +01:00
fs.writeFileSync(indexJs, `require("${bdPath.replace(/\\/g, "\\\\").replace(/"/g, "\\\"")}");\nmodule.exports = require("./core.asar");`);
console.log(" ✅ Wrote index.js");
console.log("");
2022-10-28 22:27:35 +02:00
console.log(`Injection successful, please restart ${release}.`);