check:
    just lint
    just format-check
    just typecheck

sync:
    uv sync --group dev

sync-all:
    uv sync --all-extras --group dev

lint:
    uv run ruff check

lintfix:
    uv run ruff check --fix

format:
    uv run ruff format

format-check:
    uv run ruff format --check

test:
    uv run pytest

test-cov:
    uv run pytest --cov=src --cov-report=term-missing

test-v:
    uv run pytest -vv

typecheck:
    uv run ty check src/

# For debugging only, start the runner with a manually fetched grant token. If no broker, wait until available.
debug:
    #!/usr/bin/env bash
    for i in {1..30}; do
        GRANT_TOKEN=$(curl -s -X POST http://127.0.0.1:5679/runners/auth -H "Content-Type: application/json" -d '{"token":"test"}' | jq -r '.data.token')
        if [ -n "$GRANT_TOKEN" ] && [ "$GRANT_TOKEN" != "null" ]; then
            PYTHONPATH="{{justfile_directory()}}" N8N_RUNNERS_GRANT_TOKEN="$GRANT_TOKEN" uv run python src/main.py
            exit 0
        fi
        [ $i -eq 1 ] && echo "Waiting for n8n task broker server at http://127.0.0.1:5679..."
        sleep 1
    done
    echo "Error: Could not connect to n8n task broker server after 30 seconds"
    exit 1
