.PHONY: proto test build compose-up compose-addresses compose-logs compose-down

# `proto` 负责把仓库内的 .proto 重新生成成 Go 代码。
proto:
	protoc \
		-I . \
		--go_out=. \
		--go_opt=paths=source_relative \
		--go-grpc_out=. \
		--go-grpc_opt=paths=source_relative \
		api/proto/room/v1/room.proto \
		api/proto/im/v1/im.proto \
		api/proto/wallet/v1/wallet.proto \
		api/proto/events/room/v1/events.proto

# `test` 统一跑仓库全部测试。
test:
	go test ./...

# `build` 只验证所有命令入口都能编译。
build:
	go build ./...

# `compose-up` 后台拉起全部本地服务，并打印宿主机和 Docker 内网地址。
compose-up:
	docker compose up --build -d
	./scripts/print-compose-addresses.sh

# `compose-addresses` 在服务已启动后重复打印本地和内网访问地址。
compose-addresses:
	./scripts/print-compose-addresses.sh

# `compose-logs` 跟随输出本地 compose 服务日志。
compose-logs:
	docker compose logs -f

# `compose-down` 用 docker compose 停止并清理本地服务。
compose-down:
	docker compose down
