# opsx-licence - Makefile
# 提供常用开发命令的快捷方式

.PHONY: help install dev build build-ui build-api build-binary docker-up docker-down clean status stop restart lint test

# 默认显示帮助
help:
	@echo "opsx-licence - 可用命令:"
	@echo ""
	@echo "  make install       - 安装前后端依赖"
	@echo "  make dev           - 启动开发环境（前后端）"
	@echo "  make build         - 构建前后端（分开）"
	@echo "  make build-ui      - 仅构建前端"
	@echo "  make build-api     - 仅构建后端"
	@echo "  make build-binary  - 构建前端嵌入式单二进制 opsx-licence"
	@echo "  make docker-up     - Docker 构建并启动"
	@echo "  make docker-down   - 停止 Docker 容器"
	@echo "  make test          - 运行后端测试"
	@echo "  make lint          - 运行代码检查"
	@echo "  make clean         - 清理构建产物和日志"
	@echo "  make status        - 查看服务状态"
	@echo "  make stop          - 停止所有服务"
	@echo "  make restart       - 重启所有服务"
	@echo "  make logs          - 查看实时日志"
	@echo ""

# 安装依赖
install:
	@echo "📦 安装后端依赖..."
	cd backend && go mod download
	@echo "📦 安装前端依赖..."
	cd frontend && npm install

# 开发环境启动
dev:
	./run.sh start

# 构建前端
build-ui:
	@echo "🔨 构建前端..."
	cd frontend && npm run build

# 构建后端
build-api:
	@echo "🔨 构建后端..."
	cd backend && go build -o server -ldflags="-s -w" .

# 构建所有（分开）
build: build-ui build-api

# 构建前后端合一的部署二进制 // Logan.Li
build-binary:
	./run.sh build

# Docker 部署 // Logan.Li
docker-up:
	./run.sh docker up

docker-down:
	./run.sh docker down

# 后端测试
test:
	@echo "🧪 运行后端测试..."
	cd backend && go test -v -race -coverprofile=coverage.out ./...
	@echo "📊 后端覆盖率:"
	@cd backend && go tool cover -func=coverage.out | grep total

# 代码检查
lint:
	@echo "🔍 检查后端代码..."
	cd backend && go vet ./...

# 清理
clean:
	@echo "🧹 清理构建产物..."
	rm -f backend/server backend/backend
	rm -rf frontend/dist
	rm -f backend/logs/*.log frontend/logs/*.log logs/*.log
	rm -f opsx-licence
	@echo "🧹 清理完成"

# 查看状态
status:
	./run.sh status

# 停止服务
stop:
	./run.sh stop

# 重启服务
restart:
	./run.sh restart

# 查看日志
logs:
	@tail -f backend/logs/server.log frontend/logs/dev.log 2>/dev/null || echo "日志文件不存在"
