#!/usr/bin/env bash
set -euo pipefail

REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
LAB_DIR="${REPO_ROOT}/labs/blockchain"
FOUNDRY_IMAGE="${FOUNDRY_IMAGE:-ghcr.io/foundry-rs/foundry:latest}"

usage() {
    cat <<'EOF'
Usage: ./jeannie blockchain-test [forge args...]

Run Foundry tests for labs/blockchain. Extra arguments are passed to forge test.
EOF
}

case "${1:-}" in
    -h|--help|help)
        usage
        exit 0
        ;;
esac

if command -v forge >/dev/null 2>&1; then
    cd "$LAB_DIR"
    exec forge test "$@"
fi

if ! command -v docker >/dev/null 2>&1; then
    echo "forge or docker is required for blockchain-test." >&2
    exit 1
fi

exec docker run --rm \
    -v "${LAB_DIR}:/workspace" \
    -w /workspace \
    "$FOUNDRY_IMAGE" \
    forge test "$@"
