.PHONY: dev dev-web build build-go build-web run test tidy clean docker-build docker-push-prebuilt

export GOPROXY ?= https://goproxy.cn,direct
export GOSUMDB ?= sum.golang.google.cn
export IMAGE_PREFIX ?= docker.1panel.live/library/
export APK_MIRROR ?= mirrors.aliyun.com
export DOCKER_PLATFORM ?= linux/amd64
export APP_IMAGE ?= atlas:latest

dev:
	@echo "Run backend and frontend in separate terminals:"
	@echo "  make run"
	@echo "  make dev-web"

dev-web:
	cd web && npm install && npm run dev

build-web:
	cd web && npm install && npm run build
	rm -rf internal/api/static/*
	cp -r web/dist/* internal/api/static/

build: build-web
	go build -o dist/app ./cmd/app

build-go:
	go build -o dist/app ./cmd/app

run:
	go run ./cmd/app

tidy:
	go mod tidy

test:
	go test ./...

clean:
	rm -rf dist web/dist internal/api/static .docker-bin
	@echo '<!DOCTYPE html><html><head><title>Atlas</title></head><body>Atlas</body></html>' > internal/api/static/index.html

docker-build:
	docker buildx build --platform $(DOCKER_PLATFORM) \
		-t $(APP_IMAGE) \
		--build-arg IMAGE_PREFIX=$(IMAGE_PREFIX) \
		--build-arg APK_MIRROR=$(APK_MIRROR) \
		--build-arg GOPROXY=$(GOPROXY) \
		--build-arg GOSUMDB=$(GOSUMDB) \
		--load \
		.

# 本地交叉编译 + 仅打 runtime 镜像，避免 Docker 内 go build（最快，与 Luminary 一致）
docker-push-prebuilt: build-web
	mkdir -p .docker-bin
	GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o .docker-bin/app ./cmd/app
	docker buildx build --platform $(DOCKER_PLATFORM) \
		-f docker/Dockerfile.prebuilt \
		-t $(APP_IMAGE) \
		--build-arg IMAGE_PREFIX=$(IMAGE_PREFIX) \
		--build-arg APK_MIRROR=$(APK_MIRROR) \
		--load \
		.
