.PHONY: proto server agent web dev up-server up-agent up-server-local up-agent-local down-server-local down-agent-local

PROTO_DIR := proto/agent/v1
PROTO_OUT  := server/internal/proto/agentv1
export PATH := $(HOME)/go/bin:/usr/local/go/bin:$(PATH)

# ── Protobuf codegen (Go side) ────────────────────────────────────────────────
proto:
	mkdir -p $(PROTO_OUT)
	protoc \
		--go_out=server --go_opt=module=github.com/containarr/server \
		--go-grpc_out=server --go-grpc_opt=module=github.com/containarr/server \
		-I proto \
		$(PROTO_DIR)/agent.proto

# ── Build ─────────────────────────────────────────────────────────────────────
server:
	cd server && go build ./...

agent:
	cd agent && cargo build --release

web:
	cd web && npm run build

# ── Docker ────────────────────────────────────────────────────────────────────
up-server:
	docker compose -f docker-compose.server.yml up --build -d

up-agent:
	docker compose -f docker-compose.agent.yml up --build -d

down-server:
	docker compose -f docker-compose.server.yml down

down-agent:
	docker compose -f docker-compose.agent.yml down

up-local:
	docker compose -f docker-compose.local.yml up --build -d

down-local:
	docker compose -f docker-compose.local.yml down

up-server-local:
	docker compose -f docker-compose.server.local.yml up --build -d

up-agent-local:
	docker compose -f docker-compose.agent.local.yml up --build -d

down-server-local:
	docker compose -f docker-compose.server.local.yml down

down-agent-local:
	docker compose -f docker-compose.agent.local.yml down

# ── Dev (local, no Docker) ───────────────────────────────────────────────────
dev-server:
	cd server && DB_PATH=../.data/nexarr.db JWT_SECRET=dev-secret ADMIN_USER=admin ADMIN_PASSWORD=admin go run ./cmd/server

dev-web:
	cd web && npm run dev
