lobe-chat

Форк
0
82 строки · 2.3 Кб
1
import { consola } from 'consola';
2
import { relative, resolve } from 'node:path';
3
import pMap from 'p-map';
4
import urlJoin from 'url-join';
5

6
import { DOCS_DIR, HOME_PATH, SIDEBAR_PATH, WIKI_URL, docsFiles } from './const';
7
import toc from './toc';
8
import { genMdLink, getTitle, updateDocs } from './utils';
9

10
const run = async () => {
11
  consola.info(`Find ${docsFiles.length} entry doc files`);
12
  const docs: any = await pMap(toc, async (item) => {
13
    const childrenFiles = docsFiles.filter((file) => file.includes(resolve(DOCS_DIR, item.dir)));
14

15
    const children: any = await pMap(childrenFiles, async (path) => {
16
      const paths = {
17
        cn: path.replace('.md', '.zh-CN.md'),
18
        en: path,
19
      };
20
      const links = {
21
        cn: urlJoin(
22
          WIKI_URL,
23
          relative(DOCS_DIR, paths.cn)
24
            .replaceAll('\\', '/')
25
            .split('/')[1]
26
            .replace('.zh-CN.md', '.zh-CN'),
27
        ),
28
        en: urlJoin(
29
          WIKI_URL,
30
          relative(DOCS_DIR, paths.en).replaceAll('\\', '/').split('/')[1].replace('.md', ''),
31
        ),
32
      };
33
      const titles = {
34
        cn: await getTitle(paths.cn),
35
        en: await getTitle(paths.en),
36
      };
37
      return {
38
        links,
39
        paths,
40
        titles,
41
      };
42
    });
43
    return {
44
      children: children,
45
      ...item,
46
    };
47
  });
48

49
  let homeContent = '';
50
  let sidebarContent = '';
51

52
  docs.forEach((item: any) => {
53
    homeContent += `### ${item.title}\n\n`;
54
    sidebarContent += `#### ${item.title}\n\n`;
55
    const data = [...(item.children || []), ...(item.extra || [])];
56
    data
57
      .sort((a, b) => {
58
        if (a.links.en.includes('index')) return -1;
59
        if (b.links.en.includes('index')) return 1;
60
        return a.titles.en.localeCompare(b.titles.en);
61
      })
62
      .forEach((child: any) => {
63
        homeContent += `  - ${genMdLink(child.titles.en, child.links.en)} | ${genMdLink(
64
          child.titles.cn,
65
          child.links.cn,
66
        )}\n`;
67
        sidebarContent += `- ${genMdLink(child.titles.en, child.links.en)} | ${genMdLink(
68
          child.titles.cn,
69
          child.links.cn,
70
        )}\n`;
71
      });
72
    homeContent += `\n\n<br/>\n\n`;
73
    sidebarContent += `\n\n`;
74
  });
75

76
  updateDocs(HOME_PATH, homeContent);
77
  consola.success(`Update Home.md`);
78
  updateDocs(SIDEBAR_PATH, sidebarContent);
79
  consola.success(`Update _Sidebar.md`);
80
};
81

82
run();
83

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.