aboutsummaryrefslogtreecommitdiff
path: root/scripts/genPluginList.js
blob: 909ee4066c6c2283003de2cd579fb988740dc7fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
 * 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}](#${p.name.replaceAll(" ", "-")})\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 TextEncoder().encode(header + tableOfContents + list);
    DiscordNative.fileManager.saveWithDialog(data, "plugins.md");
})();