aboutsummaryrefslogtreecommitdiff
path: root/scripts
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 /scripts
parent559edbfffe4f694a0e89b9e41b72dd6a74b22f93 (diff)
downloadVencord-4bddcee40bdc669f28a80543d58a238f92915bbb.tar.gz
Vencord-4bddcee40bdc669f28a80543d58a238f92915bbb.tar.bz2
Vencord-4bddcee40bdc669f28a80543d58a238f92915bbb.zip
Add autogenerated plugin list, closes #151
Diffstat (limited to 'scripts')
-rw-r--r--scripts/genPluginList.js65
1 files changed, 65 insertions, 0 deletions
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")
+ );
+
+})();