WEB_DIR := web
SDK_DIR := sdk
ARCH ?= $(shell go env GOARCH)
GOOS ?= $(shell go env GOOS)
CONFIG_DIR ?= configs
CONFIG_FILE ?=
ENV_FILE ?= config.yml
BUILD_DIR ?= bin

.PHONY: web-install web-build sdk-install sdk-build build run test vet check seed-pet-doctor docker-config docker-up docker-down docker-logs

web-install:
	cd $(WEB_DIR) && npm install

web-build:
	cd $(WEB_DIR) && npm run build

sdk-install:
	cd $(SDK_DIR) && npm install

sdk-build:
	cd $(SDK_DIR) && npm run build

build: web-build sdk-build
	@test -f $(CONFIG_DIR)/config.yml || (echo "missing base config: $(CONFIG_DIR)/config.yml"; exit 1)
	@test -f $(CONFIG_DIR)/$(ENV_FILE) || (echo "missing environment file: $(CONFIG_DIR)/$(ENV_FILE)"; exit 1)
	mkdir -p $(BUILD_DIR)/configs
	cp $(CONFIG_DIR)/config.yml $(BUILD_DIR)/configs/config.yml
	@if [ "$(ENV_FILE)" != "config.yml" ]; then cp $(CONFIG_DIR)/$(ENV_FILE) $(BUILD_DIR)/configs/$(ENV_FILE); fi
	CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(ARCH) go build -o $(BUILD_DIR)/main .

run: build
	./$(BUILD_DIR)/main -config-dir $(if $(CONFIG_FILE),$(CONFIG_DIR),$(BUILD_DIR)/configs) $(if $(CONFIG_FILE),-config-file $(CONFIG_FILE),)

test:
	go test ./...

vet:
	go vet ./...

check: test vet

seed-pet-doctor:
	go run ./scripts/seed-pet-doctor

docker-config:
	docker compose config --quiet

docker-up:
	docker compose up --build -d

docker-down:
	docker compose down

docker-logs:
	docker compose logs -f app nginx
