#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 本地文档构建脚本 用于快速构建和预览文档 """ import os import sys import subprocess import argparse from pathlib import Path def check_dependencies(): """检查依赖是否安装""" try: import sphinx import yaml import myst_parser print("✓ 所有依赖已安装") return True except ImportError as e: print(f"✗ 缺少依赖: {e}") print("请运行: pip install -r requirements.txt") return False def build_docs(clean=False, serve=False, port=8000): """构建文档""" print("开始构建文档...") # 检查依赖 if not check_dependencies(): return False try: # 1. 生成文档结构 print("1. 生成文档结构...") subprocess.run([ sys.executable, 'doc_generator.py' ], cwd=".", check=True) # 2. 构建HTML文档 print("2. 构建HTML文档...") build_dir = Path("_build/html") if clean and build_dir.exists(): import shutil shutil.rmtree(build_dir) print("已清理构建目录") subprocess.run([ sys.executable, '-m', 'sphinx.cmd.build', '-b', 'html', '.', str(build_dir) ], cwd=".", check=True) print(f"✓ 文档构建完成: {build_dir.absolute()}") # 创建根目录重定向页面(本地构建时重定向到当前文档) create_root_redirect_local(build_dir) # 3. 启动本地服务器(如果需要) if serve: print(f"3. 启动本地服务器 (http://localhost:{port})...") try: subprocess.run([ sys.executable, '-m', 'http.server', str(port) ], cwd=str(build_dir)) except KeyboardInterrupt: print("\n服务器已停止") return True except subprocess.CalledProcessError as e: print(f"✗ 构建失败: {e}") return False except Exception as e: print(f"✗ 未知错误: {e}") return False def create_root_redirect_local(build_dir): """为本地构建创建根目录重定向页面""" print("\n创建根目录重定向页面...") # 创建根目录的 index.html,重定向到当前文档 root_index = build_dir / "index.html" redirect_html = """