Personal time tracking app built in python fastAPI
build:
	docker compose build

up:
	docker compose --profile dev up --remove-orphans

down:
	docker compose --profile dev down

shell:
	docker compose --profile dev run --rm api bash

test:
	docker compose --profile test build api_test
	docker compose --profile test run --rm api_test uv run --group dev pytest -q

test-cov:
	docker compose --profile test run --rm api_test uv run --group dev pytest --cov=beats --cov-report=term-missing

clean:
	uv run --group dev ruff check --fix

lint:
	uv run --group dev ruff check

run-locally:
	cd src && uv run uvicorn server:app --reload --host 0.0.0.0 --port 7999

# Cloud Build targets
trigger-build:
	cd terraform && gcloud builds triggers run beats-api-build \
		--project=beats-476914 \
		--branch=main

build-status:
	gcloud builds list --project=beats-476914 --limit=5

build-logs:
	@BUILD_ID=$$(gcloud builds list --project=beats-476914 --limit=1 --format="value(id)" | head -1); \
	if [ -z "$$BUILD_ID" ]; then \
		echo "No builds found"; \
	else \
		echo "Viewing logs for build: $$BUILD_ID"; \
		gcloud builds log $$BUILD_ID --project=beats-476914; \
	fi

build-logs-follow:
	@BUILD_ID=$$(gcloud builds list --project=beats-476914 --limit=1 --format="value(id)" | head -1); \
	if [ -z "$$BUILD_ID" ]; then \
		echo "No builds found"; \
	else \
		echo "Streaming logs for build: $$BUILD_ID (Press Ctrl+C to stop)"; \
		gcloud builds log $$BUILD_ID --project=beats-476914 --stream; \
	fi

build-logs-id:
	@if [ -z "$(BUILD_ID)" ]; then \
		echo "Usage: make build-logs-id BUILD_ID=<build-id>"; \
		echo "Example: make build-logs-id BUILD_ID=7b0567e9-b97c-402b-956d-e41fc0c5d9ee"; \
	else \
		gcloud builds log $(BUILD_ID) --project=beats-476914; \
	fi

build-trigger-id:
	cd terraform && terraform output cloud_build_trigger_id