SHELL := /bin/bash
ENV_FILE ?= .env
PHP ?= php
COMPOSER ?= composer
HOST ?= 127.0.0.1
PORT ?= 8000
DB_HOST ?= $(shell grep -E '^DB_HOST=' $(ENV_FILE) 2>/dev/null | cut -d'=' -f2)
DB_PORT ?= $(shell grep -E '^DB_PORT=' $(ENV_FILE) 2>/dev/null | cut -d'=' -f2)
DB_NAME ?= $(shell grep -E '^DB_NAME=' $(ENV_FILE) 2>/dev/null | cut -d'=' -f2)
DB_USER ?= $(shell grep -E '^DB_USER=' $(ENV_FILE) 2>/dev/null | cut -d'=' -f2)
DB_PASS ?= $(shell grep -E '^DB_PASS=' $(ENV_FILE) 2>/dev/null | cut -d'=' -f2)

.PHONY: all install migrate serve clean

all: install migrate

install:
	$(COMPOSER) install

migrate:
	@echo "Running migrations from migrations/*.sql" && \
	if [ -z "$(DB_NAME)" ]; then echo "DB_NAME not set in $(ENV_FILE)"; exit 1; fi; \
	for file in $$(ls migrations/*.sql | sort); do \
		echo "Applying $$file"; \
		MYSQL_PWD="$(DB_PASS)" mysql -h "$(DB_HOST)" -P "$(DB_PORT)" -u "$(DB_USER)" "$(DB_NAME)" < $$file || exit $$?; \
	done

serve:
	$(PHP) -S $(HOST):$(PORT) -t public

clean:
	rm -rf vendor composer.lock
