# ===========================================
# 机房一体化巡检告警工具 - Makefile
# ===========================================

APP_NAME := dc-inspection
VERSION := v1.0.0
BUILD_TIME := $(shell date +%Y-%m-%dT%H:%M:%S)
LDFLAGS := -X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME)

.PHONY: build build-linux build-windows build-arm64 clean run test vet

# 默认编译（当前平台）
build:
	go build -ldflags "$(LDFLAGS)" -o bin/$(APP_NAME) ./cmd/$(APP_NAME)
	@echo "Build complete: bin/$(APP_NAME)"

# 交叉编译 Linux amd64（内网服务器常用）
build-linux:
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o bin/$(APP_NAME)-linux-amd64 ./cmd/$(APP_NAME)
	@echo "Build complete: bin/$(APP_NAME)-linux-amd64"

# 交叉编译 Windows amd64
build-windows:
	CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o bin/$(APP_NAME)-windows-amd64.exe ./cmd/$(APP_NAME)
	@echo "Build complete: bin/$(APP_NAME)-windows-amd64.exe"

# 交叉编译 ARM64
build-arm64:
	CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o bin/$(APP_NAME)-linux-arm64 ./cmd/$(APP_NAME)
	@echo "Build complete: bin/$(APP_NAME)-linux-arm64"

# 编译所有平台
build-all: build-linux build-windows build-arm64
	@echo "All platform builds complete"

# 运行
run:
	go run ./cmd/$(APP_NAME) -config configs/config.yaml

# 运行指定模块
run-switch:
	go run ./cmd/$(APP_NAME) -config configs/config.yaml -inspect switch

run-cloud:
	go run ./cmd/$(APP_NAME) -config configs/config.yaml -inspect cloud

run-ad:
	go run ./cmd/$(APP_NAME) -config configs/config.yaml -inspect ad

run-es:
	go run ./cmd/$(APP_NAME) -config configs/config.yaml -inspect es

# 测试
test:
	go test -v ./...

# 代码检查
vet:
	go vet ./...

# 清理
clean:
	rm -rf bin/
	@echo "Clean complete"

# 下载依赖
deps:
	go mod tidy
	go mod download

# UPX 压缩二进制（可选，需安装 upx）
compress: build-linux
	upx --best --lzma bin/$(APP_NAME)-linux-amd64
	@echo "Compressed: bin/$(APP_NAME)-linux-amd64"
