set shell := ["bash", "-euo", "pipefail", "-c"]

# List available recipes
default:
    @just --list

# Install Git hooks
install-git-hooks:
    #!/usr/bin/env bash
    set -euo pipefail
    if git rev-parse --show-toplevel >/dev/null 2>&1; then
        bun run lefthook install
    else
        printf '%s\n' 'Skipping Lefthook installation because this directory is not a Git repository yet.'
    fi

# Install dependencies for CI
setup-ci:
    uv sync --locked --group dev
    bun install --frozen-lockfile

# Set up development environment
setup-dev: update-dev install-git-hooks

# Update development dependencies
update-dev:
    #!/usr/bin/env bash
    set -euo pipefail
    if ! uv sync --group dev 2>/dev/null; then
        printf '%s\n' 'Recreating broken .venv'
        rm -rf .venv
        uv sync --group dev
    fi
    if ! bun install 2>/dev/null; then
        printf '%s\n' 'Recreating broken node_modules'
        rm -rf node_modules
        bun install
    fi

# Run all pre-commit hooks
check-all:
    bun run lefthook run pre-commit --force --all-files

# Run test suite
test:
    uv run pytest
