lobe-chat
82 строки · 2.3 Кб
1import { consola } from 'consola';
2import { relative, resolve } from 'node:path';
3import pMap from 'p-map';
4import urlJoin from 'url-join';
5
6import { DOCS_DIR, HOME_PATH, SIDEBAR_PATH, WIKI_URL, docsFiles } from './const';
7import toc from './toc';
8import { genMdLink, getTitle, updateDocs } from './utils';
9
10const run = async () => {
11consola.info(`Find ${docsFiles.length} entry doc files`);
12const docs: any = await pMap(toc, async (item) => {
13const childrenFiles = docsFiles.filter((file) => file.includes(resolve(DOCS_DIR, item.dir)));
14
15const children: any = await pMap(childrenFiles, async (path) => {
16const paths = {
17cn: path.replace('.md', '.zh-CN.md'),
18en: path,
19};
20const links = {
21cn: urlJoin(
22WIKI_URL,
23relative(DOCS_DIR, paths.cn)
24.replaceAll('\\', '/')
25.split('/')[1]
26.replace('.zh-CN.md', '.zh-CN'),
27),
28en: urlJoin(
29WIKI_URL,
30relative(DOCS_DIR, paths.en).replaceAll('\\', '/').split('/')[1].replace('.md', ''),
31),
32};
33const titles = {
34cn: await getTitle(paths.cn),
35en: await getTitle(paths.en),
36};
37return {
38links,
39paths,
40titles,
41};
42});
43return {
44children: children,
45...item,
46};
47});
48
49let homeContent = '';
50let sidebarContent = '';
51
52docs.forEach((item: any) => {
53homeContent += `### ${item.title}\n\n`;
54sidebarContent += `#### ${item.title}\n\n`;
55const data = [...(item.children || []), ...(item.extra || [])];
56data
57.sort((a, b) => {
58if (a.links.en.includes('index')) return -1;
59if (b.links.en.includes('index')) return 1;
60return a.titles.en.localeCompare(b.titles.en);
61})
62.forEach((child: any) => {
63homeContent += ` - ${genMdLink(child.titles.en, child.links.en)} | ${genMdLink(
64child.titles.cn,
65child.links.cn,
66)}\n`;
67sidebarContent += `- ${genMdLink(child.titles.en, child.links.en)} | ${genMdLink(
68child.titles.cn,
69child.links.cn,
70)}\n`;
71});
72homeContent += `\n\n<br/>\n\n`;
73sidebarContent += `\n\n`;
74});
75
76updateDocs(HOME_PATH, homeContent);
77consola.success(`Update Home.md`);
78updateDocs(SIDEBAR_PATH, sidebarContent);
79consola.success(`Update _Sidebar.md`);
80};
81
82run();
83