2022-10-04 21:07:34 +01:00
|
|
|
const path = require("path");
|
|
|
|
const fs = require("fs");
|
|
|
|
|
|
|
|
console.log("\nVencord Uninstaller\n");
|
|
|
|
|
|
|
|
if (!fs.existsSync(path.join(process.cwd(), "node_modules"))) {
|
2022-10-09 22:31:51 +02:00
|
|
|
console.log("You need to install dependencies first. Run:", "pnpm install --frozen-lockfile");
|
2022-10-04 21:07:34 +01:00
|
|
|
process.exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
const {
|
|
|
|
getMenuItem,
|
|
|
|
getWindowsDirs,
|
|
|
|
getDarwinDirs,
|
|
|
|
getLinuxDirs,
|
|
|
|
} = require("./common");
|
|
|
|
|
|
|
|
switch (process.platform) {
|
|
|
|
case "win32":
|
|
|
|
uninstall(getWindowsDirs());
|
|
|
|
break;
|
|
|
|
case "darwin":
|
|
|
|
uninstall(getDarwinDirs());
|
|
|
|
break;
|
|
|
|
case "linux":
|
|
|
|
uninstall(getLinuxDirs());
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
console.log("Unknown OS");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
async function uninstall(installations) {
|
|
|
|
const selected = await getMenuItem(installations);
|
|
|
|
|
|
|
|
for (const version of selected.versions) {
|
|
|
|
const dir = version.path;
|
|
|
|
// Check if we have write perms to the install directory...
|
|
|
|
try {
|
|
|
|
fs.accessSync(selected.location, fs.constants.W_OK);
|
|
|
|
} catch (e) {
|
|
|
|
console.error("No write access to", selected.location);
|
|
|
|
console.error(
|
|
|
|
"Try running this script as an administrator:",
|
2022-10-05 21:58:17 +01:00
|
|
|
"sudo pnpm uninject"
|
2022-10-04 21:07:34 +01:00
|
|
|
);
|
|
|
|
process.exit(1);
|
|
|
|
}
|
|
|
|
if (fs.existsSync(dir)) {
|
|
|
|
fs.rmSync(dir, { recursive: true });
|
|
|
|
}
|
|
|
|
console.log(
|
|
|
|
"Successfully unpatched",
|
|
|
|
version.name
|
|
|
|
? `${selected.branch} ${version.name}`
|
|
|
|
: selected.branch
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|