ErisPulse 2.3.1__tar.gz → 2.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/tools/merge_md.py +114 -16
- erispulse-2.3.2/.github/workflows/auto-update-docs.yml +152 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/CHANGELOG.md +12 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/PKG-INFO +1 -1
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/README.md +1 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/ai/AIDocs/ErisPulse-AdapterDev.md +565 -134
- erispulse-2.3.2/docs/ai/AIDocs/ErisPulse-Core.md +6697 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/ai/AIDocs/ErisPulse-Full.md +565 -134
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/ai/AIDocs/ErisPulse-ModuleDev.md +111 -15
- erispulse-2.3.2/docs/ai/AIDocs/no-api/ErisPulse-AdapterDev.md +4095 -0
- erispulse-2.3.2/docs/ai/AIDocs/no-api/ErisPulse-Core.md +3076 -0
- erispulse-2.3.2/docs/ai/AIDocs/no-api/ErisPulse-Full.md +4657 -0
- erispulse-2.3.2/docs/ai/AIDocs/no-api/ErisPulse-ModuleDev.md +3375 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Bases/__init__.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Bases/adapter.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Bases/module.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Event/__init__.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Event/base.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Event/command.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Event/exceptions.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Event/message.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Event/meta.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Event/notice.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/Event/request.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/_self_config.md +10 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/adapter.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/config.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/exceptions.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/lifecycle.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/logger.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/module.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/router.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/storage.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/Core/ux.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/__init__.md +30 -3
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/__main__.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/utils/__init__.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/utils/cli.md +14 -13
- erispulse-2.3.2/docs/api/ErisPulse/utils/console.md +23 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/utils/package_manager.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/api/ErisPulse/utils/reload_handler.md +2 -2
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/development/adapter.md +274 -3
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/platform-features/README.md +1 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/platform-features/onebot11.md +110 -16
- erispulse-2.3.2/docs/platform-features/onebot12.md +339 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/packages.json +16 -4
- {erispulse-2.3.1 → erispulse-2.3.2}/pyproject.toml +1 -1
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/utils/cli.py +9 -4
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/ISSUE_TEMPLATE/module_submission.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/assets/docs/install_pip.gif +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/assets/erispulse_logo.png +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/scripts/update_packages.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/tools/update-api-docs.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/workflows/auto-tag-release.yml +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/workflows/auto-update-packages.yml +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/workflows/code-quality-check.yml +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.github/workflows/pypi-publish.yml +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.gitignore +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/.python-version +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/CODE_OF_CONDUCT.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/CONTRIBUTING.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/LICENSE +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/README.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/SECURITY.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/devs/test.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/devs/test_adapter.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/devs/test_cmd.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/devs/test_event.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/devs/test_files/test.docx +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/devs/test_files/test.jpg +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/devs/test_files/test.mp4 +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/ai/README.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/ai/module-generation.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/README.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/adapters.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/best-practices.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/cli.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/concepts.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/event-system.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/lazy-loading.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/modules.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/router.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/core/self-config.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/development/README.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/development/cli.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/development/module.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/platform-features/email.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/platform-features/maintain-notes.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/platform-features/telegram.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/platform-features/yunhu.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/quick-start.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/standards/README.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/standards/api-response.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/standards/event-conversion.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/styleguide/README.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/docs/styleguide/docstring_spec.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-adapter/LICENSE +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-adapter/MyAdapter/Converter.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-adapter/MyAdapter/Core.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-adapter/MyAdapter/__init__.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-adapter/README.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-adapter/pyproject.toml +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-cli-module/LICENSE +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-cli-module/README.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-cli-module/my_cli_module/__init__.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-cli-module/my_cli_module/cli.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-cli-module/pyproject.toml +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-module/LICENSE +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-module/MyModule/Core.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-module/MyModule/__init__.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-module/README.md +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/examples/example-module/pyproject.toml +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/scripts/install/install.ps1 +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/scripts/install/install.sh +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Bases/__init__.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Bases/adapter.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Bases/module.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Event/__init__.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Event/base.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Event/command.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Event/exceptions.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Event/message.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Event/meta.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Event/notice.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/Event/request.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/__init__.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/_self_config.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/adapter.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/config.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/exceptions.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/lifecycle.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/logger.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/module.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/router.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/storage.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/Core/ux.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/__init__.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/__main__.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/utils/__init__.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/utils/console.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/utils/package_manager.py +0 -0
- {erispulse-2.3.1 → erispulse-2.3.2}/src/ErisPulse/utils/reload_handler.py +0 -0
|
@@ -1,6 +1,38 @@
|
|
|
1
1
|
import os
|
|
2
2
|
from datetime import datetime
|
|
3
3
|
|
|
4
|
+
"""
|
|
5
|
+
ErisPulse文档合并工具
|
|
6
|
+
|
|
7
|
+
使用方法:
|
|
8
|
+
1. 默认生成包含API的完整文档和开发文档:
|
|
9
|
+
python merge_md.py
|
|
10
|
+
|
|
11
|
+
2. 生成不包含API的文档版本:
|
|
12
|
+
python merge_md.py no-api
|
|
13
|
+
|
|
14
|
+
3. 只生成完整文档:
|
|
15
|
+
python merge_md.py full
|
|
16
|
+
|
|
17
|
+
4. 只生成开发文档:
|
|
18
|
+
python merge_md.py dev
|
|
19
|
+
|
|
20
|
+
5. 只生成核心文档:
|
|
21
|
+
python merge_md.py core
|
|
22
|
+
|
|
23
|
+
输出文件位置:
|
|
24
|
+
- 完整文档: docs/ai/AIDocs/ErisPulse-Full.md
|
|
25
|
+
- 模块开发文档: docs/ai/AIDocs/ErisPulse-ModuleDev.md
|
|
26
|
+
- 适配器开发文档: docs/ai/AIDocs/ErisPulse-AdapterDev.md
|
|
27
|
+
- 核心文档: docs/ai/AIDocs/ErisPulse-Core.md
|
|
28
|
+
|
|
29
|
+
no-api版本输出文件位置:
|
|
30
|
+
- 完整文档(no-api): docs/ai/AIDocs/no-api/ErisPulse-Full.md
|
|
31
|
+
- 模块开发文档(no-api): docs/ai/AIDocs/no-api/ErisPulse-ModuleDev.md
|
|
32
|
+
- 适配器开发文档(no-api): docs/ai/AIDocs/no-api/ErisPulse-AdapterDev.md
|
|
33
|
+
- 核心文档(no-api): docs/ai/AIDocs/no-api/ErisPulse-Core.md
|
|
34
|
+
"""
|
|
35
|
+
|
|
4
36
|
def merge_md_files(output_file, files_to_merge, title="文档合集"):
|
|
5
37
|
"""
|
|
6
38
|
合并多个Markdown文件
|
|
@@ -265,7 +297,7 @@ def get_platform_features_files():
|
|
|
265
297
|
|
|
266
298
|
return platform_files
|
|
267
299
|
|
|
268
|
-
def generate_full_document():
|
|
300
|
+
def generate_full_document(include_api=True):
|
|
269
301
|
print("正在生成完整文档...")
|
|
270
302
|
|
|
271
303
|
# 基础文件
|
|
@@ -294,15 +326,24 @@ def generate_full_document():
|
|
|
294
326
|
if len(existing_files) != len(files_to_merge):
|
|
295
327
|
print(f"警告: {len(files_to_merge) - len(existing_files)} 个文件不存在,已跳过")
|
|
296
328
|
|
|
297
|
-
|
|
329
|
+
# 根据是否包含API决定输出路径
|
|
330
|
+
if include_api:
|
|
331
|
+
output_file = "docs/ai/AIDocs/ErisPulse-Full.md"
|
|
332
|
+
else:
|
|
333
|
+
output_file = "docs/ai/AIDocs/no-api/ErisPulse-Full.md"
|
|
334
|
+
|
|
298
335
|
os.makedirs(os.path.dirname(output_file), exist_ok=True)
|
|
299
336
|
|
|
300
337
|
merge_md_files(output_file, existing_files, "完整开发文档")
|
|
301
|
-
merge_api_docs("docs/api", output_file)
|
|
302
338
|
|
|
303
|
-
|
|
339
|
+
# 根据参数决定是否合并API文档
|
|
340
|
+
if include_api:
|
|
341
|
+
merge_api_docs("docs/api", output_file)
|
|
342
|
+
|
|
343
|
+
api_status = "包含API" if include_api else "不包含API"
|
|
344
|
+
print(f"完整文档生成完成({api_status}),已保存到: {output_file}")
|
|
304
345
|
|
|
305
|
-
def generate_dev_documents():
|
|
346
|
+
def generate_dev_documents(include_api=True):
|
|
306
347
|
print("正在生成开发文档...")
|
|
307
348
|
|
|
308
349
|
# 模块开发文档
|
|
@@ -331,11 +372,17 @@ def generate_dev_documents():
|
|
|
331
372
|
# 过滤不存在的文件
|
|
332
373
|
existing_files = [f for f in files_to_merge if os.path.exists(f['path'])]
|
|
333
374
|
|
|
334
|
-
|
|
375
|
+
# 根据是否包含API决定输出路径
|
|
376
|
+
if include_api:
|
|
377
|
+
module_output = "docs/ai/AIDocs/ErisPulse-ModuleDev.md"
|
|
378
|
+
else:
|
|
379
|
+
module_output = "docs/ai/AIDocs/no-api/ErisPulse-ModuleDev.md"
|
|
380
|
+
|
|
335
381
|
os.makedirs(os.path.dirname(module_output), exist_ok=True)
|
|
336
382
|
merge_md_files(module_output, existing_files, "模块开发文档")
|
|
337
383
|
|
|
338
|
-
|
|
384
|
+
api_status = "包含API" if include_api else "不包含API"
|
|
385
|
+
print(f"模块开发文档生成完成({api_status}),已保存到: {module_output}")
|
|
339
386
|
|
|
340
387
|
# 适配器开发文档
|
|
341
388
|
adapter_files = [
|
|
@@ -357,14 +404,22 @@ def generate_dev_documents():
|
|
|
357
404
|
# 过滤不存在的文件
|
|
358
405
|
existing_files = [f for f in files_to_merge if os.path.exists(f['path'])]
|
|
359
406
|
|
|
360
|
-
|
|
407
|
+
# 根据是否包含API决定输出路径
|
|
408
|
+
if include_api:
|
|
409
|
+
adapter_output = "docs/ai/AIDocs/ErisPulse-AdapterDev.md"
|
|
410
|
+
else:
|
|
411
|
+
adapter_output = "docs/ai/AIDocs/no-api/ErisPulse-AdapterDev.md"
|
|
412
|
+
|
|
361
413
|
os.makedirs(os.path.dirname(adapter_output), exist_ok=True)
|
|
362
414
|
merge_md_files(adapter_output, existing_files, "适配器开发文档")
|
|
363
|
-
merge_api_docs("docs/api", adapter_output)
|
|
364
415
|
|
|
365
|
-
|
|
416
|
+
# 根据参数决定是否合并API文档
|
|
417
|
+
if include_api:
|
|
418
|
+
merge_api_docs("docs/api", adapter_output)
|
|
419
|
+
|
|
420
|
+
print(f"适配器开发文档生成完成({api_status}),已保存到: {adapter_output}")
|
|
366
421
|
|
|
367
|
-
def generate_core_document():
|
|
422
|
+
def generate_core_document(include_api=True):
|
|
368
423
|
print("正在生成核心文档...")
|
|
369
424
|
|
|
370
425
|
# 基础文件
|
|
@@ -385,11 +440,21 @@ def generate_core_document():
|
|
|
385
440
|
# 过滤不存在的文件
|
|
386
441
|
existing_files = [f for f in files_to_merge if os.path.exists(f['path'])]
|
|
387
442
|
|
|
388
|
-
|
|
443
|
+
# 根据是否包含API决定输出路径
|
|
444
|
+
if include_api:
|
|
445
|
+
core_output = "docs/ai/AIDocs/ErisPulse-Core.md"
|
|
446
|
+
else:
|
|
447
|
+
core_output = "docs/ai/AIDocs/no-api/ErisPulse-Core.md"
|
|
448
|
+
|
|
389
449
|
os.makedirs(os.path.dirname(core_output), exist_ok=True)
|
|
390
450
|
merge_md_files(core_output, existing_files, "核心功能文档")
|
|
391
451
|
|
|
392
|
-
|
|
452
|
+
# 根据参数决定是否合并API文档
|
|
453
|
+
if include_api:
|
|
454
|
+
merge_api_docs("docs/api", core_output)
|
|
455
|
+
|
|
456
|
+
api_status = "包含API" if include_api else "不包含API"
|
|
457
|
+
print(f"核心文档生成完成({api_status}),已保存到: {core_output}")
|
|
393
458
|
|
|
394
459
|
def generate_custom_document(title, files, api_dirs, output_path):
|
|
395
460
|
"""
|
|
@@ -414,11 +479,44 @@ def generate_custom_document(title, files, api_dirs, output_path):
|
|
|
414
479
|
|
|
415
480
|
print(f"{title}生成完成,已保存到: {output_path}")
|
|
416
481
|
|
|
482
|
+
def generate_no_api_documents():
|
|
483
|
+
print("正在生成no-api版本文档...")
|
|
484
|
+
|
|
485
|
+
# 生成不包含API的完整文档
|
|
486
|
+
generate_full_document(include_api=False)
|
|
487
|
+
|
|
488
|
+
# 生成不包含API的开发文档
|
|
489
|
+
generate_dev_documents(include_api=False)
|
|
490
|
+
|
|
491
|
+
# 生成不包含API的核心文档
|
|
492
|
+
generate_core_document(include_api=False)
|
|
493
|
+
|
|
494
|
+
print("所有no-api版本文档生成完成")
|
|
495
|
+
|
|
417
496
|
if __name__ == "__main__":
|
|
497
|
+
import sys
|
|
498
|
+
|
|
418
499
|
try:
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
500
|
+
# 检查命令行参数
|
|
501
|
+
if len(sys.argv) > 1:
|
|
502
|
+
if sys.argv[1] == "no-api":
|
|
503
|
+
generate_no_api_documents()
|
|
504
|
+
elif sys.argv[1] == "full":
|
|
505
|
+
generate_full_document()
|
|
506
|
+
generate_dev_documents()
|
|
507
|
+
generate_core_document()
|
|
508
|
+
elif sys.argv[1] == "dev":
|
|
509
|
+
generate_dev_documents()
|
|
510
|
+
elif sys.argv[1] == "core":
|
|
511
|
+
generate_core_document()
|
|
512
|
+
else:
|
|
513
|
+
print(f"未知参数: {sys.argv[1]}")
|
|
514
|
+
print("可用参数: no-api, full, dev, core")
|
|
515
|
+
else:
|
|
516
|
+
generate_no_api_documents()
|
|
517
|
+
generate_full_document()
|
|
518
|
+
generate_dev_documents()
|
|
519
|
+
generate_core_document()
|
|
422
520
|
print("所有文档生成完成")
|
|
423
521
|
except Exception as e:
|
|
424
522
|
print(f"文档生成过程中出现错误: {str(e)}")
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
name: 📚 艾莉丝的文档炼金工房 ~
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: write
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [ main, develop, master ]
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [ main, develop, master ]
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
update-and-generate-docs:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: 检出魔法书
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
with:
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
22
|
+
|
|
23
|
+
- name: 准备魔法环境
|
|
24
|
+
uses: actions/setup-python@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: '3.x'
|
|
27
|
+
|
|
28
|
+
- name: 学习魔法咒语
|
|
29
|
+
run: |
|
|
30
|
+
python -m pip install --upgrade pip
|
|
31
|
+
pip install requests
|
|
32
|
+
|
|
33
|
+
- name: 🔮 更新API文档
|
|
34
|
+
id: update-api
|
|
35
|
+
run: |
|
|
36
|
+
echo "📖 艾莉丝开始更新API文档了哦~"
|
|
37
|
+
|
|
38
|
+
# 确保输出目录存在
|
|
39
|
+
mkdir -p docs/api
|
|
40
|
+
|
|
41
|
+
# 运行API文档更新脚本
|
|
42
|
+
if [ -f ".github/tools/update-api-docs.py" ]; then
|
|
43
|
+
python .github/tools/update-api-docs.py --src src --output docs/api --format markdown
|
|
44
|
+
echo "✅ API文档更新完成!"
|
|
45
|
+
else
|
|
46
|
+
echo "⚠️ 未找到API文档更新脚本,跳过此步骤"
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# 检查API文档是否有更新
|
|
50
|
+
if git diff --quiet docs/api/; then
|
|
51
|
+
echo "API文档没有变化"
|
|
52
|
+
echo "api_updated=false" >> $GITHUB_OUTPUT
|
|
53
|
+
else
|
|
54
|
+
echo "发现了API文档更新!"
|
|
55
|
+
echo "api_updated=true" >> $GITHUB_OUTPUT
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
- name: 📜 生成合并文档
|
|
59
|
+
id: merge-docs
|
|
60
|
+
run: |
|
|
61
|
+
echo "📚 艾莉丝开始生成合并文档了~"
|
|
62
|
+
|
|
63
|
+
# 确保输出目录存在
|
|
64
|
+
mkdir -p docs/ai/AIDocs
|
|
65
|
+
mkdir -p docs/ai/AIDocs/no-api
|
|
66
|
+
|
|
67
|
+
# 生成包含API的文档
|
|
68
|
+
if [ -f ".github/tools/merge_md.py" ]; then
|
|
69
|
+
python .github/tools/merge_md.py full
|
|
70
|
+
python .github/tools/merge_md.py dev
|
|
71
|
+
|
|
72
|
+
echo "✅ 包含API的文档生成完成!"
|
|
73
|
+
else
|
|
74
|
+
echo "⚠️ 未找到文档合并脚本"
|
|
75
|
+
exit 1
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# 检查合并文档是否有更新
|
|
79
|
+
if git diff --quiet docs/ai/AIDocs/; then
|
|
80
|
+
echo "合并文档没有变化"
|
|
81
|
+
echo "docs_updated=false" >> $GITHUB_OUTPUT
|
|
82
|
+
else
|
|
83
|
+
echo "发现了合并文档更新!"
|
|
84
|
+
echo "docs_updated=true" >> $GITHUB_OUTPUT
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
- name: 📝 生成no-api版本文档
|
|
88
|
+
run: |
|
|
89
|
+
echo "📖 艾莉丝正在生成不包含API的文档版本~"
|
|
90
|
+
|
|
91
|
+
# 生成不包含API的文档
|
|
92
|
+
if [ -f ".github/tools/merge_md.py" ]; then
|
|
93
|
+
python .github/tools/merge_md.py no-api
|
|
94
|
+
echo "✅ no-api版本文档生成完成!"
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
- name: 📊 统计更新情况
|
|
98
|
+
run: |
|
|
99
|
+
echo "📈 艾莉丝正在统计今天的文档更新情况~"
|
|
100
|
+
|
|
101
|
+
# 统计API文档更新
|
|
102
|
+
api_files=$(git diff --name-only docs/api/ 2>/dev/null | wc -l)
|
|
103
|
+
echo "📝 API文档更新文件数: $api_files"
|
|
104
|
+
|
|
105
|
+
# 统计合并文档更新
|
|
106
|
+
full_docs=$(git diff --name-only docs/ai/AIDocs/ 2>/dev/null | wc -l)
|
|
107
|
+
echo "📚 合并文档更新文件数: $full_docs"
|
|
108
|
+
|
|
109
|
+
# 统计no-api文档
|
|
110
|
+
noapi_docs=$(git diff --name-only docs/ai/AIDocs/no-api/ 2>/dev/null | wc -l)
|
|
111
|
+
echo "📖 no-api文档更新文件数: $noapi_docs"
|
|
112
|
+
|
|
113
|
+
- name: 💾 提交更新
|
|
114
|
+
if: steps.update-api.outputs.api_updated == 'true' || steps.merge-docs.outputs.docs_updated == 'true'
|
|
115
|
+
run: |
|
|
116
|
+
echo "💾 艾莉丝正在保存文档更新~"
|
|
117
|
+
|
|
118
|
+
# 配置Git用户信息
|
|
119
|
+
git config --local user.email "eris@magic-circle.dev"
|
|
120
|
+
git config --local user.name "Eris the Scribe"
|
|
121
|
+
|
|
122
|
+
# 添加所有更新的文档
|
|
123
|
+
git add docs/api/ docs/ai/AIDocs/
|
|
124
|
+
|
|
125
|
+
# 生成提交信息
|
|
126
|
+
commit_msg="📚 艾莉丝的自动文档更新魔法 [skip ci]
|
|
127
|
+
|
|
128
|
+
📖 自动更新了项目文档
|
|
129
|
+
📝 包含API文档和合并文档的最新版本
|
|
130
|
+
📚 生成了包含API和不包含API两种版本
|
|
131
|
+
|
|
132
|
+
🌟 详情请查看 docs/ 目录"
|
|
133
|
+
|
|
134
|
+
# 提交更改
|
|
135
|
+
git commit -m "$commit_msg"
|
|
136
|
+
git push
|
|
137
|
+
|
|
138
|
+
- name: 🎉 文档更新完成
|
|
139
|
+
if: steps.update-api.outputs.api_updated == 'true' || steps.merge-docs.outputs.docs_updated == 'true'
|
|
140
|
+
run: |
|
|
141
|
+
echo "🌟 艾莉丝今天也努力完成了文档更新的魔法呢!"
|
|
142
|
+
echo "📚 所有文档已更新并提交到仓库"
|
|
143
|
+
echo "💫 包含了最新的API文档和合并文档"
|
|
144
|
+
echo "🌙 今天的文档炼金工作完成啦~"
|
|
145
|
+
|
|
146
|
+
- name: 😊 无更新时的说明
|
|
147
|
+
if: steps.update-api.outputs.api_updated != 'true' && steps.merge-docs.outputs.docs_updated != 'true'
|
|
148
|
+
run: |
|
|
149
|
+
echo "✨ 今天没有发现需要更新的文档呢~"
|
|
150
|
+
echo "📚 所有文档都是最新状态"
|
|
151
|
+
echo "🌟 艾莉丝会继续守护着我们的文档库!"
|
|
152
|
+
echo "🌙 下次更新再见啦~"
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
- [云湖平台特性](platform-features/yunhu.md) - 云湖适配器特有功能说明
|
|
43
43
|
- [Telegram平台特性](platform-features/telegram.md) - Telegram适配器特有功能说明
|
|
44
44
|
- [OneBot11平台特性](platform-features/onebot11.md) - OneBot11适配器特有功能说明
|
|
45
|
+
- [OneBot12平台特性](platform-features/onebot12.md) - OneBot12适配器特有功能说明
|
|
45
46
|
- [邮件平台特性](platform-features/email.md) - 邮件适配器特有功能说明
|
|
46
47
|
|
|
47
48
|
### API 参考
|