# Makefile — onesvm-browser-server 仓根（Contract §5-A5）。
# 目标覆盖：fmt / vet / test / build-amd64 / image / image-trafilatura / smoke / wc。
# 密钥不入本文件（部署 env 走 gitignore 的 deploy.env，见 scripts/deploy-mgr1.sh）。

.DEFAULT_GOAL := help

# 生产 amd64（组织部署规范：Mac arm64 构建必须显式 --platform linux/amd64）。
PLATFORM ?= linux/amd64

# 冒烟镜像 tag（本机 arm64；不与生产 :dev 混用）。
SMOKE_IMAGE ?= onesvm/browser-server:smoke

.PHONY: help fmt vet test build-amd64 image image-trafilatura smoke wc

help: ## 显示本帮助
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  \033[36m%-18s\033[0m %s\n", $$1, $$2}'

fmt: ## gofmt 格式检查（server/；输出为空即通过）
	cd server && gofmt -l .

vet: ## go vet 静态检查
	cd server && go vet ./...

test: ## 单测全量
	cd server && go test ./...

build-amd64: ## amd64 交叉构建产出 bin/（部署轮 save|load 用本机镜像，此 target 供快速验证）
	mkdir -p bin
	cd server && GOOS=linux GOARCH=amd64 go build -trimpath -ldflags "-s -w" -o ../bin/browser-server-linux-amd64 ./cmd/browser-server

image: ## 构建生产镜像 onesvm/browser-server:dev（默认 amd64；本机冒烟可 PLATFORM=linux/arm64）
	docker build --platform $(PLATFORM) -t onesvm/browser-server:dev -f server/Dockerfile .

image-trafilatura: ## 构建 trafilatura 引擎镜像 onesvm/trafilatura-http:dev（amd64）
	docker build --platform $(PLATFORM) -t onesvm/trafilatura-http:dev stacks/trafilatura

smoke: ## 本机 compose 冒烟（起 stub 引擎 + 三角色，12 步断言；证据落 .dsh/artifacts）
	bash scripts/smoke-local.sh

wc: ## 源文件行数检查（server *.go 按行数倒序，>600 即违规）
	find server -name '*.go' | xargs wc -l | sort -rn | head -20