gen-api.sh 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/bin/bash
  2. #
  3. # gen-api.sh — 根据 .api 文件生成 HTTP 接口代码 (handler / types / routes)
  4. #
  5. # 用法:
  6. # ./gen-api.sh [api文件]
  7. #
  8. # 示例:
  9. # ./gen-api.sh # 默认使用 perm.api
  10. # ./gen-api.sh perm.api # 指定 api 文件
  11. #
  12. # 生成内容:
  13. # internal/handler/routes.go — 路由注册(覆盖)
  14. # internal/handler/<group>/*.go — handler 文件(覆盖)
  15. # internal/types/types.go — 请求/响应结构体(覆盖)
  16. # internal/logic/<group>/*Logic.go — 业务逻辑(仅新增,不覆盖已有文件)
  17. #
  18. # 注意: goctl 默认不会覆盖已存在的 logic 文件,可安全重复执行。
  19. set -euo pipefail
  20. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  21. TEMPLATE_HOME="$SCRIPT_DIR/cli/goctl"
  22. STYLE="goZero"
  23. API_FILE="${1:-perm.api}"
  24. # 支持相对路径
  25. if [[ "$API_FILE" != /* ]]; then
  26. API_FILE="$SCRIPT_DIR/$API_FILE"
  27. fi
  28. if [[ ! -f "$API_FILE" ]]; then
  29. echo "错误: API 文件不存在: $API_FILE"
  30. exit 1
  31. fi
  32. echo "API 文件: $API_FILE"
  33. echo "模板目录: $TEMPLATE_HOME"
  34. echo "输出目录: $SCRIPT_DIR"
  35. echo "文件风格: $STYLE"
  36. echo ""
  37. goctl api go \
  38. -api "$API_FILE" \
  39. -dir "$SCRIPT_DIR" \
  40. --home "$TEMPLATE_HOME" \
  41. --style "$STYLE"
  42. echo ""
  43. echo "完成!已根据 $(basename "$API_FILE") 生成接口代码。"