lobe-chat
42 строки · 1.3 Кб
1import { consola } from 'consola';
2import { markdownTable } from 'markdown-table';
3
4import { DataItem, PLGUIN_URL, PLUGIN_REPO, PLUGIN_SPLIT } from './const';
5import { fetchPluginIndex, genLink, genTags, readReadme, updateReadme, writeReadme } from './utlis';
6
7const genPluginTable = (data: DataItem[], lang: string) => {
8const isCN = lang === 'zh-CN';
9const content = data
10.slice(0, 4)
11.map((item) => [
12[
13genLink(item.meta.title.replaceAll('|', ','), PLGUIN_URL),
14`<sup>By **${item.author}** on **${item.createdAt}**</sup>`,
15].join('<br/>'),
16[item.meta.description.replaceAll('|', ','), genTags(item.meta.tags)].join('<br/>'),
17]);
18return markdownTable([
19isCN ? ['最近新增', '插件描述'] : ['Recent Submits', 'Description'],
20...content,
21]);
22};
23
24const runPluginTable = async (lang: string) => {
25const data = await fetchPluginIndex(lang);
26const md = readReadme(lang);
27const mdTable = genPluginTable(data, lang);
28const newMd = updateReadme(
29PLUGIN_SPLIT,
30md,
31[mdTable, `> 📊 Total plugins: ${genLink(`<kbd>**${data.length}**</kbd>`, PLUGIN_REPO)}`].join(
32'\n\n',
33),
34);
35writeReadme(newMd, lang);
36consola.success('Sync plugin index success!');
37};
38
39export default async () => {
40await runPluginTable('en-US');
41await runPluginTable('zh-CN');
42};
43