# Makefile for AIOps Agent
# 提供本地构建、交叉编译及常用开发任务
# 署名 Logan.Li

APP        := aiops-agent
VERSION    := 1.0.0
BUILD_TIME := $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
# 注入版本信息；-s -w 去除调试符号以缩减二进制体积
LDFLAGS    := -s -w -X main.version=$(VERSION) -X main.buildTime=$(BUILD_TIME)
# 静态编译：关闭 CGO 并使用静态链接
LINUX_LDFLAGS := -extldflags "-static"

.PHONY: build cross build-linux-amd64 build-linux-arm64 build-darwin-arm64 tidy run fmt vet clean help

## build: 本地构建当前平台二进制
build:
	go build -ldflags "$(LDFLAGS)" -o $(APP) .

## cross: 交叉编译 Linux amd64/arm64 + macOS arm64
cross: build-linux-amd64 build-linux-arm64 build-darwin-arm64

## build-linux-amd64: 交叉编译 linux/amd64
build-linux-amd64:
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
	go build -ldflags "$(LDFLAGS) $(LINUX_LDFLAGS)" -o bin/$(APP)-linux-amd64 .

## build-linux-arm64: 交叉编译 linux/arm64
build-linux-arm64:
	CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \
	go build -ldflags "$(LDFLAGS) $(LINUX_LDFLAGS)" -o bin/$(APP)-linux-arm64 .

## build-darwin-arm64: 编译 macOS/arm64 (Apple Silicon) // Logan.Li
build-darwin-arm64:
	CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 \
	go build -ldflags "$(LDFLAGS)" -o bin/$(APP)-darwin-arm64 .

## tidy: 整理依赖
tidy:
	go mod tidy

## run: 本地运行（默认连接 localhost:8080）
run:
	go run . -server http://localhost:8080 -interval 10

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

## vet: 静态检查
vet:
	go vet ./...

## clean: 清理构建产物
clean:
	rm -rf bin $(APP)

## help: 显示帮助
help:
	@grep -E '^## ' $(MAKEFILE_LIST) | sed 's/## //' | column -t -s ':'
