aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVendicated <vendicated@riseup.net>2022-10-25 12:19:56 +0200
committerVendicated <vendicated@riseup.net>2022-10-25 12:20:29 +0200
commit4bddcee40bdc669f28a80543d58a238f92915bbb (patch)
tree50764c47f7ccd997a8c244ea27660ef6e657b036
parent559edbfffe4f694a0e89b9e41b72dd6a74b22f93 (diff)
downloadVencord-4bddcee40bdc669f28a80543d58a238f92915bbb.tar.gz
Vencord-4bddcee40bdc669f28a80543d58a238f92915bbb.tar.bz2
Vencord-4bddcee40bdc669f28a80543d58a238f92915bbb.zip
Add autogenerated plugin list, closes #151
-rw-r--r--README.md2
-rw-r--r--scripts/genPluginList.js65
2 files changed, 66 insertions, 1 deletions
diff --git a/README.md b/README.md
index 5aacda3..595fd5a 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ A Discord client mod that does things differently
- Works on Discord's latest update that breaks all other mods
- Browser Support (experimental): Run Vencord in your Browser instead of the desktop app
- Custom Css and Themes: Manually edit `%appdata%/Vencord/settings/quickCss.css` / `~/.config/Vencord/settings/quickCss.css` with your favourite editor and the client will automatically apply your changes. To import BetterDiscord themes, just add `@import url(theUrl)` on the top of this file. (Make sure the url is a github raw URL or similar and only contains plain text, and NOT a nice looking website)
-- Many Usefulâ„¢ plugins - [List](https://github.com/Vendicated/Vencord/tree/main/src/plugins)
+- Many Usefulâ„¢ plugins - [See a full List](https://gist.github.com/Vendicated/8696cde7b92548064a3ae92ead84d033)
- Experiments
- Proper context isolation -> Works in newer Electron versions (Confirmed working on versions 13-22)
- Inline patches: Patch Discord's code with regex replacements! See [the experiments plugin](src/plugins/experiments.ts) for an example. While being more complex, this is more powerful than monkey patching since you can patch only small parts of functions instead of fully replacing them, access non exported/local variables and even replace constants (like in the aforementioned experiments patch!)
diff --git a/scripts/genPluginList.js b/scripts/genPluginList.js
new file mode 100644
index 0000000..20cf9d0
--- /dev/null
+++ b/scripts/genPluginList.js
@@ -0,0 +1,65 @@
+/*
+ * Vencord, a modification for Discord's desktop app
+ * Copyright (c) 2022 Vendicated and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+// A script to automatically generate a list of all plugins.
+// Just copy paste the entire file into a running Vencord install and it will prompt you
+// to save the file
+
+(() => {
+ // eslint-disable-next-line spaced-comment
+ /// <reference types="../src/modules"/>
+ /**
+ * @type {typeof import("~plugins").default}
+ */
+ const Plugins = Vencord.Plugins.plugins;
+
+ const header = `
+<!-- This file is auto generated, do not edit -->
+
+# Vencord Plugins
+`;
+
+ let tableOfContents = "\n\n";
+
+ let list = "\n\n";
+
+ for (const p of Object.values(Plugins).sort((a, b) => a.name.localeCompare(b.name))) {
+ tableOfContents += `- [${p.name}](#${encodeURIComponent(p.name)})\n`;
+
+ list += `## ${p.name}
+
+${p.description}
+
+**Authors**: ${p.authors.map(a => a.name).join(", ")}
+`;
+
+ if (p.commands?.length) {
+ list += "\n\n### Commands\n";
+ for (const cmd of p.commands) {
+ list += `${cmd.name} - ${cmd.description}\n\n`;
+ }
+ }
+ list += "\n\n";
+ }
+
+ const data = new Blob([header.trimStart(), tableOfContents, list.trimEnd()], { type: "text/plain" });
+ data.arrayBuffer().then(buf =>
+ DiscordNative.fileManager.saveWithDialog(new Uint8Array(buf), "plugins.md")
+ );
+
+})();