.PHONY: setup dev test lint build clean

setup:
	@echo "==> Installing engine deps"
	cd packages/engine && poetry install
	@echo "==> Installing api deps"
	cd packages/api && poetry install
	@echo "==> Installing web deps"
	cd packages/web && pnpm install

dev:
	@echo "==> Starting services (Redis, API, worker, web)"
	docker compose up -d redis
	cd packages/api && poetry run uvicorn remodel_api.main:app --reload --port 8000 &
	cd packages/api && poetry run arq remodel_api.workers.main.WorkerSettings &
	cd packages/web && pnpm dev

test:
	cd packages/engine && poetry run pytest --cov=remodel_engine --cov-report=term-missing
	cd packages/api && poetry run pytest --cov=remodel_api --cov-report=term-missing

lint:
	cd packages/engine && poetry run ruff check . && poetry run mypy src/
	cd packages/api && poetry run ruff check . && poetry run mypy src/
	cd packages/web && pnpm tsc --noEmit && pnpm eslint .

build:
	cd packages/web && pnpm build

clean:
	find . -type d -name __pycache__ -exec rm -rf {} +
	find . -type d -name .mypy_cache -exec rm -rf {} +
	find . -type d -name .ruff_cache -exec rm -rf {} +
	find . -type d -name .pytest_cache -exec rm -rf {} +
	find . -type d -name .next -exec rm -rf {} +
	find . -type d -name node_modules -exec rm -rf {} +
