#!/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//*.go — handler 文件(覆盖) # internal/types/types.go — 请求/响应结构体(覆盖) # internal/logic//*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") 生成接口代码。"