build.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 简化的文档构建脚本
  5. 基于新的构建管理器,提供简单的构建接口
  6. """
  7. import sys
  8. import argparse
  9. from pathlib import Path
  10. def main():
  11. """主函数"""
  12. parser = argparse.ArgumentParser(description="文档构建工具")
  13. parser.add_argument('--clean', action='store_true', help='清理构建目录')
  14. parser.add_argument('--serve', action='store_true', help='启动本地服务器')
  15. parser.add_argument('--port', type=int, default=8000, help='服务器端口 (默认: 8000)')
  16. parser.add_argument('--validate', action='store_true', help='验证版本配置')
  17. parser.add_argument('--list-versions', action='store_true', help='列出所有版本')
  18. args = parser.parse_args()
  19. # 导入构建管理器
  20. try:
  21. from build_manager import BuildManager
  22. except ImportError:
  23. print("错误: 无法导入构建管理器")
  24. print("请确保 build_manager.py 文件存在")
  25. sys.exit(1)
  26. try:
  27. manager = BuildManager()
  28. if args.validate:
  29. from utils.version_utils import validate_versions_config
  30. success = validate_versions_config()
  31. sys.exit(0 if success else 1)
  32. elif args.list_versions:
  33. from utils.version_utils import get_version_configs
  34. versions = get_version_configs()
  35. print("版本列表:")
  36. for version in versions:
  37. print(f" - {version['display_name']} ({version['name']}) -> {version['branch']}")
  38. return
  39. # 构建所有版本
  40. success = manager.build_all_versions(clean=args.clean)
  41. if success:
  42. print("\n🎉 所有版本构建成功!")
  43. print(f"📁 文档位置: {manager.versions_dir}")
  44. if args.serve:
  45. print(f"\n🌐 启动本地服务器 (http://localhost:{args.port})...")
  46. import subprocess
  47. try:
  48. subprocess.run([
  49. sys.executable, '-m', 'http.server', str(args.port)
  50. ], cwd=str(manager.versions_dir))
  51. except KeyboardInterrupt:
  52. print("\n服务器已停止")
  53. else:
  54. print("\n❌ 部分版本构建失败!")
  55. sys.exit(1)
  56. except Exception as e:
  57. print(f"✗ 构建错误: {e}")
  58. sys.exit(1)
  59. if __name__ == "__main__":
  60. main()