aboutsummaryrefslogtreecommitdiff
path: root/scripts/patcher/uninstall.js
diff options
context:
space:
mode:
authormegumin <megumin.bakaretsurie@gmail.com>2022-10-04 21:07:34 +0100
committerGitHub <noreply@github.com>2022-10-04 22:07:34 +0200
commit88542b9ede71fd89b1edef41175131aa0dc5027f (patch)
tree722fa43bd4ed84e6dd22146840a5af876632ccd2 /scripts/patcher/uninstall.js
parentc5e0c7a6e72d68b9479c163ac446bb905bdf12a5 (diff)
downloadVencord-88542b9ede71fd89b1edef41175131aa0dc5027f.tar.gz
Vencord-88542b9ede71fd89b1edef41175131aa0dc5027f.tar.bz2
Vencord-88542b9ede71fd89b1edef41175131aa0dc5027f.zip
feat(installer): Implement cross-platform patcher. (#39)
* megu cute
Diffstat (limited to 'scripts/patcher/uninstall.js')
-rw-r--r--scripts/patcher/uninstall.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/scripts/patcher/uninstall.js b/scripts/patcher/uninstall.js
new file mode 100644
index 0000000..c470c64
--- /dev/null
+++ b/scripts/patcher/uninstall.js
@@ -0,0 +1,59 @@
+const path = require("path");
+const fs = require("fs");
+
+console.log("\nVencord Uninstaller\n");
+
+if (!fs.existsSync(path.join(process.cwd(), "node_modules"))) {
+ console.log("You need to install dependencies first. Run:", "pnpm install");
+ 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:",
+ "sudo pnpm unpatch"
+ );
+ process.exit(1);
+ }
+ if (fs.existsSync(dir)) {
+ fs.rmSync(dir, { recursive: true });
+ }
+ console.log(
+ "Successfully unpatched",
+ version.name
+ ? `${selected.branch} ${version.name}`
+ : selected.branch
+ );
+ }
+}