feat(website): 插件文档自动生成

pull/56/head
moonrailgun 3 years ago
parent fd4cdc2865
commit 78550ad260

@ -4,6 +4,6 @@
"url": "/plugins/com.msgbyte.miaolang/index.js", "url": "/plugins/com.msgbyte.miaolang/index.js",
"version": "0.0.0", "version": "0.0.0",
"author": "msgbyte", "author": "msgbyte",
"description": "消息解释器渲染BBCode类型的消息", "description": "一个用于支持bbcode语法解释富文本消息的插件",
"requireRestart": true "requireRestart": true
} }

@ -4,7 +4,7 @@
"url": "/plugins/com.msgbyte.miaolang/index.js", "url": "/plugins/com.msgbyte.miaolang/index.js",
"version": "0.0.0", "version": "0.0.0",
"author": "msgbyte", "author": "msgbyte",
"description": "为聊天提供喵语言对话功能", "description": "允许发送喵语,安装插件后的双方加密对话,未安装插件的人看到的是 '喵'",
"documentUrl": "/plugins/com.msgbyte.miaolang/README.md", "documentUrl": "/plugins/com.msgbyte.miaolang/README.md",
"requireRestart": false "requireRestart": false
} }

@ -0,0 +1,8 @@
## 原神主题
包含主题如下:
- 原神-胡桃
- 原神-琴
- 原神-安柏
- 原神-莫娜
- 原神-罗莎莉亚

@ -6,5 +6,6 @@
"version": "0.0.0", "version": "0.0.0",
"author": "msgbyte", "author": "msgbyte",
"description": "原神主题", "description": "原神主题",
"documentUrl": "/plugins/com.msgbyte.theme.genshin/README.md",
"requireRestart": false "requireRestart": false
} }

@ -4,6 +4,6 @@
"url": "/plugins/com.msgbyte.theme.miku/index.js", "url": "/plugins/com.msgbyte.theme.miku/index.js",
"version": "0.0.0", "version": "0.0.0",
"author": "msgbyte", "author": "msgbyte",
"description": "初音未来主题", "description": "初音未来主题,支持亮色与暗色",
"requireRestart": false "requireRestart": false
} }

@ -982,12 +982,16 @@ importers:
'@mdx-js/react': ^1.6.21 '@mdx-js/react': ^1.6.21
'@svgr/webpack': ^5.5.0 '@svgr/webpack': ^5.5.0
'@tsconfig/docusaurus': ^1.0.5 '@tsconfig/docusaurus': ^1.0.5
'@types/fs-extra': ^9.0.13
'@types/glob': ^8.0.0
'@types/react': ^17.0.26 '@types/react': ^17.0.26
'@types/react-helmet': ^6.1.2 '@types/react-helmet': ^6.1.2
'@types/react-router-dom': ^5.3.0 '@types/react-router-dom': ^5.3.0
clsx: ^1.1.1 clsx: ^1.1.1
docusaurus-plugin-image-zoom: ^0.0.2 docusaurus-plugin-image-zoom: ^0.0.2
file-loader: ^6.2.0 file-loader: ^6.2.0
fs-extra: ^10.1.0
glob: ^7.2.0
prism-react-renderer: ^1.2.1 prism-react-renderer: ^1.2.1
react: ^17.0.1 react: ^17.0.1
react-dom: ^17.0.1 react-dom: ^17.0.1
@ -1008,9 +1012,13 @@ importers:
devDependencies: devDependencies:
'@docusaurus/module-type-aliases': 2.0.1_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/module-type-aliases': 2.0.1_sfoxds7t5ydpegc3knd667wn6m
'@tsconfig/docusaurus': 1.0.6 '@tsconfig/docusaurus': 1.0.6
'@types/fs-extra': 9.0.13
'@types/glob': 8.0.0
'@types/react': 17.0.48 '@types/react': 17.0.48
'@types/react-helmet': 6.1.5 '@types/react-helmet': 6.1.5
'@types/react-router-dom': 5.3.3 '@types/react-router-dom': 5.3.3
fs-extra: 10.1.0
glob: 7.2.3
typescript: 4.7.4 typescript: 4.7.4
packages: packages:
@ -9143,6 +9151,13 @@ packages:
'@types/minimatch': 3.0.5 '@types/minimatch': 3.0.5
'@types/node': 18.7.11 '@types/node': 18.7.11
/@types/glob/8.0.0:
resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==}
dependencies:
'@types/minimatch': 3.0.5
'@types/node': 18.7.11
dev: true
/@types/graceful-fs/4.1.5: /@types/graceful-fs/4.1.5:
resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==}
dependencies: dependencies:

@ -4,6 +4,6 @@
"url": "{BACKEND}/plugins/com.msgbyte.linkmeta/index.js", "url": "{BACKEND}/plugins/com.msgbyte.linkmeta/index.js",
"version": "0.0.0", "version": "0.0.0",
"author": "msgbyte", "author": "msgbyte",
"description": "解析并获取在聊天信息中的url信息概述", "description": "解析并获取在聊天信息中的url信息概述,如标题/概述/缩略图, 支持媒体路径,直接显示媒体播放器(特殊支持bilibili自动加载b站iframe播放器)",
"requireRestart": false "requireRestart": false
} }

@ -4,6 +4,6 @@
"url": "{BACKEND}/plugins/com.msgbyte.tasks/index.js", "url": "{BACKEND}/plugins/com.msgbyte.tasks/index.js",
"version": "0.0.0", "version": "0.0.0",
"author": "msgbyte", "author": "msgbyte",
"description": "任务管理工具", "description": "任务管理插件在个人面板中增加TODO面板用于个人待办事项的管理",
"requireRestart": true "requireRestart": true
} }

@ -3,44 +3,57 @@ sidebar_position: 1
title: 纯前端插件 title: 纯前端插件
--- ---
### com.msgbyte.bbcode ### com.msgbyte.bbcode BBCode 消息解释器
`默认安装`
一个用于支持bbcode语法解释富文本消息的插件 一个用于支持bbcode语法解释富文本消息的插件
### com.msgbyte.intro
`默认安装` ### com.msgbyte.draw 绘图插件
允许发送自定义绘图
### com.msgbyte.filepizza file.pizza
快捷打开 filepizza 以支持p2p传输文件
### com.msgbyte.filesfm files.fm
快捷打开 files.fm 以支持传输文件
### com.msgbyte.genshin 原神工具箱
为Tailchat增加原神相关的娱乐能力
### com.msgbyte.intro 初始引导插件
为应用首次打开介绍应用的能力
新人引导插件
### com.msgbyte.notify ### com.msgbyte.miaolang 喵语言
`默认安装` 允许发送喵语,安装插件后的双方加密对话,未安装插件的人看到的是 '喵'
消息通知插件
### com.msgbyte.webview ### com.msgbyte.notify 消息通知插件
`默认安装` 为应用增加通知的能力
增加用户添加群组网页面板的能力。
### com.msgbyte.draw ### com.msgbyte.openapi 开放平台插件
允许用户发送自定义绘图 为应用提供开放平台的操作能力
### com.msgbyte.genshin
原神工具箱 ### com.msgbyte.snapdrop 隔空投送
### com.msgbyte.miaolang 隔空投送 —— 在同一网络发送文件与消息
允许发送喵语,安装插件后的双方加密对话,未安装插件的人看到的是 "喵"
### com.msgbyte.openapi ### com.msgbyte.webview 网页面板插件
`WIP` 为群组提供创建网页面板的功能
开放平台管理插件

@ -3,34 +3,32 @@ sidebar_position: 3
title: 前后端插件 title: 前后端插件
--- ---
### com.msgbyte.github Github 订阅
### com.msgbyte.github 订阅Github项目动态到群组
github 集成
目前支持接受来自`Github webhooks`的推送 ### com.msgbyte.linkmeta Url元数据展示
### com.msgbyte.linkmeta 解析并获取在聊天信息中的url信息概述如标题/概述/缩略图, 支持媒体路径,直接显示媒体播放器(特殊支持bilibili自动加载b站iframe播放器)
Url元数据展示
用于获取消息中网址的基本信息,如标题/概述/缩略图 ### com.msgbyte.meeting 音视频服务
支持媒体路径,直接显示媒体播放器 为Tailchat提供音视频通讯的服务
特殊支持bilibili自动加载b站iframe播放器
### com.msgbyte.simplenotify ### com.msgbyte.simplenotify 简易机器人
简易机器人,用于简易推送消息到群组频道 一个简单的通用通知机器人, 用于直接向群组发送消息
### com.msgbyte.tasks
### com.msgbyte.tasks 任务管理
任务管理插件在个人面板中增加TODO面板用于个人待办事项的管理 任务管理插件在个人面板中增加TODO面板用于个人待办事项的管理
### com.msgbyte.meeting ### com.msgbyte.topic 群组话题
`WIP` 为群组提供话题功能
tailchat视频会议与语音频道支持

@ -3,17 +3,12 @@ sidebar_position: 2
title: 自定义主题 title: 自定义主题
--- ---
### com.msgbyte.theme.genshin ### com.msgbyte.theme.genshin 原神主题
原神主题 原神主题
包含主题如下:
- 原神-胡桃
- 原神-琴
- 原神-安柏
- 原神-莫娜
- 原神-罗莎莉亚
### com.msgbyte.theme.miku ### com.msgbyte.theme.miku Miku初音未来主题
初音未来主题,支持亮色与暗色 初音未来主题,支持亮色与暗色

@ -11,7 +11,8 @@
"clear": "docusaurus clear", "clear": "docusaurus clear",
"serve": "docusaurus serve", "serve": "docusaurus serve",
"write-translations": "docusaurus write-translations", "write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids" "write-heading-ids": "docusaurus write-heading-ids",
"gen:plugin-doc": "ts-node ./scripts/generate-plugin-list.ts"
}, },
"dependencies": { "dependencies": {
"@docusaurus/core": "2.0.0-beta.18", "@docusaurus/core": "2.0.0-beta.18",
@ -41,9 +42,13 @@
"devDependencies": { "devDependencies": {
"@docusaurus/module-type-aliases": "^2.0.0-beta.18", "@docusaurus/module-type-aliases": "^2.0.0-beta.18",
"@tsconfig/docusaurus": "^1.0.5", "@tsconfig/docusaurus": "^1.0.5",
"@types/fs-extra": "^9.0.13",
"@types/glob": "^8.0.0",
"@types/react": "^17.0.26", "@types/react": "^17.0.26",
"@types/react-helmet": "^6.1.2", "@types/react-helmet": "^6.1.2",
"@types/react-router-dom": "^5.3.0", "@types/react-router-dom": "^5.3.0",
"fs-extra": "^10.1.0",
"glob": "^7.2.0",
"typescript": "^4.4.3" "typescript": "^4.4.3"
} }
} }

@ -0,0 +1,80 @@
import glob from 'glob';
import path from 'path';
import fs from 'fs-extra';
interface PluginMeta {
label: string;
name: string;
url: string;
version: string;
author: string;
description: string;
documentUrl: string;
requireRestart: boolean;
}
const rootDir = path.resolve(__dirname, '../../');
const feMD = path.resolve(__dirname, '../docs/plugin-list/fe.md');
const themeMD = path.resolve(__dirname, '../docs/plugin-list/theme.md');
const beMD = path.resolve(__dirname, '../docs/plugin-list/full.md');
const feplugins = glob.sync(
path.join(rootDir, './client/web/plugins/*/manifest.json')
);
const beplugins = glob.sync(
path.join(rootDir, './server/plugins/*/web/plugins/*/manifest.json')
);
Promise.all(feplugins.map((path) => fs.readJson(path))).then(async (list) => {
await writeMarkdown(
feMD,
list.filter((item) => !item.name.includes('.theme.')),
`---
sidebar_position: 1
title:
---`
);
await writeMarkdown(
themeMD,
list.filter((item) => item.name.includes('.theme.')),
`---
sidebar_position: 2
title:
---`
);
console.log('纯前端插件文档自动生成完毕');
});
Promise.all(beplugins.map((path) => fs.readJson(path))).then(async (list) => {
await writeMarkdown(
beMD,
list,
`---
sidebar_position: 3
title:
---`
);
console.log('前后端插件文档自动生成完毕');
});
/**
* markdown
*/
async function writeMarkdown(path: string, list: PluginMeta[], header: string) {
const text = `${header}
${list.map(renderPluginDetail).join('\n\n')}
`;
await fs.writeFile(path, text);
}
function renderPluginDetail(meta: PluginMeta) {
return `### ${meta.name} ${meta.label}
${meta.description}
`;
}
Loading…
Cancel
Save