#!/usr/bin/env bash # run.sh set -euo pipefail # ---- utils --------------------------------------------------------------- die() { echo "❌ $*" >&2; exit 1; } exists() { command -v "$1" >/dev/null 2>&1; } PY=python [ -n "${VIRTUAL_ENV-}" ] || die "Activate your virtualenv first (python deps)." CMD=${1:-} shift || true # remove first arg if present case "${CMD}" in single) CONFIG=${1:-}; QUERIES=${2:-} [ -f "$CONFIG" ] || die "Config YAML not found: $CONFIG" [ -f "$QUERIES" ] || die "Queries JSONL not found: $QUERIES" shift 2 ${PY} scripts/run_experiments.py --config "$CONFIG" --queries "$QUERIES" "$@" ;; grid) CONFIGS=${1:-} DATASETS=${2:-} shift 2 ${PY} scripts/run_grid_experiments.py --configs ${CONFIGS} --datasets ${DATASETS} "$@" ;; dashboard) if [[ "${1:-}" == "--docker" ]]; then docker build -t rag-eval . # uses Dockerfile default (Streamlit) docker run -p 8501:8501 rag-eval else streamlit run scripts/dashboard.py fi ;; *) cat < [args] Modes ----- single CONFIG QUERIES [extra run_experiments.py flags] grid CONFIG_GLOB DATASET_GLOB [extra grid flags] dashboard [--docker] # without flag runs locally EOF [ -n "$CMD" ] && die "Unknown mode: $CMD" ;; esac