.PHONY: build run clean test lint fmt vet tidy

# 应用名称
APP_NAME=scm-server
# 入口目录
CMD_DIR=./cmd/server
# 输出目录
BUILD_DIR=./build

# 默认目标
all: build

# 编译
build:
	@echo "==> 编译 $(APP_NAME)..."
	@mkdir -p $(BUILD_DIR)
	go build -o $(BUILD_DIR)/$(APP_NAME) $(CMD_DIR)

# 运行
run:
	go run $(CMD_DIR)/main.go

# 清理
clean:
	@echo "==> 清理构建产物..."
	@rm -rf $(BUILD_DIR)

# 测试
test:
	go test -v -count=1 ./...

# 代码检查
lint: fmt vet

# 格式化
fmt:
	go fmt ./...

# 静态分析
vet:
	go vet ./...

# 整理依赖
tidy:
	go mod tidy

# 开发模式（热重载需要安装 air）
dev:
	@which air > /dev/null 2>&1 || (echo "请先安装 air: go install github.com/air-verse/air@latest" && exit 1)
	air

# 帮助
help:
	@echo "可用命令:"
	@echo "  make build   - 编译项目"
	@echo "  make run     - 直接运行"
	@echo "  make clean   - 清理构建产物"
	@echo "  make test    - 运行测试"
	@echo "  make lint    - 代码检查 (fmt + vet)"
	@echo "  make fmt     - 格式化代码"
	@echo "  make vet     - 静态分析"
	@echo "  make tidy    - 整理依赖"
	@echo "  make dev     - 开发模式（需要 air）"
