diff options
author | megumin <megumin.bakaretsurie@gmail.com> | 2022-10-04 21:07:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-04 22:07:34 +0200 |
commit | 88542b9ede71fd89b1edef41175131aa0dc5027f (patch) | |
tree | 722fa43bd4ed84e6dd22146840a5af876632ccd2 /scripts/patcher/uninstall.js | |
parent | c5e0c7a6e72d68b9479c163ac446bb905bdf12a5 (diff) | |
download | Vencord-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.js | 59 |
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 + ); + } +} |