ai-copyright.sh 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. #!/bin/bash
  2. # AI驱动软件著作权申请材料生成系统 - 统一入口脚本 (Shell版本)
  3. # 版本: 1.0
  4. # 颜色定义
  5. RED='\033[0;31m'
  6. GREEN='\033[0;32m'
  7. YELLOW='\033[1;33m'
  8. BLUE='\033[0;34m'
  9. PURPLE='\033[0;35m'
  10. CYAN='\033[0;36m'
  11. NC='\033[0m'
  12. # 获取脚本目录
  13. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  14. print_colored() {
  15. local color=$1
  16. local message=$2
  17. echo -e "${color}${message}${NC}"
  18. }
  19. print_header() {
  20. print_colored $CYAN "======================================================================"
  21. print_colored $PURPLE "🤖 AI驱动软件著作权申请材料生成系统"
  22. print_colored $BLUE " 统一管理工具 v1.0 (Shell版本)"
  23. print_colored $CYAN "======================================================================"
  24. }
  25. show_help() {
  26. echo "用法: $0 <命令> [选项]"
  27. echo
  28. echo "可用命令:"
  29. echo " init <项目名称> 初始化新项目"
  30. echo " generate <all|frontend|backend> 生成源代码"
  31. echo " check [--quick] [路径] 检查项目完整性"
  32. echo " test [路径] 运行自动化测试"
  33. echo " validate-frontend 验证前端页面完整性"
  34. echo " status 显示项目状态"
  35. echo
  36. echo "示例:"
  37. echo " $0 init \"我的项目\""
  38. echo " $0 generate all"
  39. echo " $0 check --quick"
  40. echo " $0 test"
  41. }
  42. init_project() {
  43. local project_name=$1
  44. local force_flag=$2
  45. if [ -z "$project_name" ]; then
  46. print_colored $RED "❌ 请提供项目名称"
  47. echo "用法: $0 init <项目名称>"
  48. return 1
  49. fi
  50. local cmd="python3 ${SCRIPT_DIR}/scripts/init/init_project.py '$project_name'"
  51. if [ "$force_flag" = "--force" ]; then
  52. cmd="$cmd --force"
  53. fi
  54. print_colored $BLUE "🔄 初始化项目 '$project_name'..."
  55. eval $cmd
  56. }
  57. generate_code() {
  58. local type=$1
  59. case $type in
  60. "all")
  61. script="generate_all_sourcecode.py"
  62. desc="生成所有源代码"
  63. ;;
  64. "frontend")
  65. script="generate_frontend_sourcecode.py"
  66. desc="生成前端源代码"
  67. ;;
  68. "backend")
  69. script="generate_backend_sourcecode.py"
  70. desc="生成后端源代码"
  71. ;;
  72. *)
  73. print_colored $RED "❌ 无效的生成类型: $type"
  74. echo "可用类型: all, frontend, backend"
  75. return 1
  76. ;;
  77. esac
  78. print_colored $BLUE "🔄 $desc..."
  79. python3 "${SCRIPT_DIR}/scripts/generators/$script"
  80. }
  81. check_project() {
  82. local quick_flag=$1
  83. local project_path=$2
  84. local cmd="python3 ${SCRIPT_DIR}/scripts/validators/check_project.py"
  85. if [ "$quick_flag" = "--quick" ]; then
  86. cmd="$cmd --quick"
  87. if [ -n "$project_path" ]; then
  88. cmd="$cmd '$project_path'"
  89. fi
  90. elif [ -n "$quick_flag" ] && [ "$quick_flag" != "--quick" ]; then
  91. # quick_flag实际上是路径
  92. cmd="$cmd '$quick_flag'"
  93. fi
  94. print_colored $BLUE "🔄 检查项目完整性..."
  95. eval $cmd
  96. }
  97. run_tests() {
  98. local project_path=$1
  99. local cmd="python3 ${SCRIPT_DIR}/scripts/validators/run_tests.py"
  100. if [ -n "$project_path" ]; then
  101. cmd="$cmd '$project_path'"
  102. fi
  103. print_colored $BLUE "🔄 运行自动化测试..."
  104. eval $cmd
  105. }
  106. validate_frontend() {
  107. print_colored $BLUE "🔄 验证前端页面完整性..."
  108. python3 "${SCRIPT_DIR}/scripts/validators/validate_frontend_pages.py"
  109. }
  110. show_status() {
  111. print_colored $CYAN "\n📊 项目状态概览"
  112. echo "----------------------------------------------------"
  113. # 检查配置文件
  114. if [ -f "${SCRIPT_DIR}/ai-copyright-config.json" ]; then
  115. print_colored $GREEN "✅ 项目配置文件存在"
  116. elif [ -f "${SCRIPT_DIR}/config/ai-copyright-config.example.json" ]; then
  117. print_colored $YELLOW "⚠️ 使用模板配置文件,请复制并自定义"
  118. echo " cp ${SCRIPT_DIR}/config/ai-copyright-config.example.json ${SCRIPT_DIR}/ai-copyright-config.json"
  119. else
  120. print_colored $RED "❌ 配置文件缺失"
  121. fi
  122. # 检查关键目录
  123. local dirs=("requires_docs:输入文档目录" "output_docs:输出文档目录" "output_sourcecode:生成代码目录" "specs_docs:规范文档目录" "system_prompts:AI提示词目录")
  124. for dir_info in "${dirs[@]}"; do
  125. local dir_name="${dir_info%:*}"
  126. local desc="${dir_info#*:}"
  127. if [ -d "${SCRIPT_DIR}/$dir_name" ]; then
  128. print_colored $GREEN "✅ $desc 存在"
  129. else
  130. print_colored $RED "❌ $desc 缺失"
  131. fi
  132. done
  133. }
  134. main() {
  135. print_header
  136. if [ $# -eq 0 ]; then
  137. print_colored $YELLOW "\n⚠️ 未指定命令,显示帮助信息:"
  138. show_help
  139. return 0
  140. fi
  141. local command=$1
  142. shift
  143. case $command in
  144. "init")
  145. init_project "$@"
  146. ;;
  147. "generate")
  148. generate_code "$@"
  149. ;;
  150. "check")
  151. check_project "$@"
  152. ;;
  153. "test")
  154. run_tests "$@"
  155. ;;
  156. "validate-frontend")
  157. validate_frontend
  158. ;;
  159. "status")
  160. show_status
  161. ;;
  162. "help"|"--help"|"-h")
  163. show_help
  164. ;;
  165. *)
  166. print_colored $RED "❌ 未知命令: $command"
  167. echo
  168. show_help
  169. return 1
  170. ;;
  171. esac
  172. }
  173. main "$@"