Skip to content

Commit

Permalink
Add autogenerated plugin list, closes Vendicated#151
Browse files Browse the repository at this point in the history
  • Loading branch information
Vendicated committed Oct 25, 2022
1 parent 559edbf commit 4bddcee
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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!)
Expand Down
65 changes: 65 additions & 0 deletions scripts/genPluginList.js
Original file line number Diff line number Diff line change
@@ -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")
);

})();

0 comments on commit 4bddcee

Please sign in to comment.