| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #!/bin/bash
- #
- # gen-api.sh — 根据 .api 文件生成 HTTP 接口代码 (handler / types / routes)
- #
- # 用法:
- # ./gen-api.sh [api文件]
- #
- # 示例:
- # ./gen-api.sh # 默认使用 perm.api
- # ./gen-api.sh perm.api # 指定 api 文件
- #
- # 生成内容:
- # internal/handler/routes.go — 路由注册(覆盖)
- # internal/handler/<group>/*.go — handler 文件(覆盖)
- # internal/types/types.go — 请求/响应结构体(覆盖)
- # internal/logic/<group>/*Logic.go — 业务逻辑(仅新增,不覆盖已有文件)
- #
- # 注意: goctl 默认不会覆盖已存在的 logic 文件,可安全重复执行。
- set -euo pipefail
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
- TEMPLATE_HOME="$SCRIPT_DIR/cli/goctl"
- STYLE="goZero"
- API_FILE="${1:-perm.api}"
- # 支持相对路径
- if [[ "$API_FILE" != /* ]]; then
- API_FILE="$SCRIPT_DIR/$API_FILE"
- fi
- if [[ ! -f "$API_FILE" ]]; then
- echo "错误: API 文件不存在: $API_FILE"
- exit 1
- fi
- echo "API 文件: $API_FILE"
- echo "模板目录: $TEMPLATE_HOME"
- echo "输出目录: $SCRIPT_DIR"
- echo "文件风格: $STYLE"
- echo ""
- goctl api go \
- -api "$API_FILE" \
- -dir "$SCRIPT_DIR" \
- --home "$TEMPLATE_HOME" \
- --style "$STYLE"
- echo ""
- echo "完成!已根据 $(basename "$API_FILE") 生成接口代码。"
|