#!/usr/bin/env bash
# Start local Redis when Docker is unavailable.
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
REDIS_BIN="$ROOT/.tools/redis-stable/src/redis-server"
DATA_DIR="$ROOT/.tools/redis-data"
LOG_FILE="$ROOT/.tools/redis.log"

if [ ! -x "$REDIS_BIN" ]; then
  echo "Redis binary not found at $REDIS_BIN"
  echo "Build it once with:"
  echo "  mkdir -p $ROOT/.tools && cd $ROOT/.tools"
  echo "  curl -fsSL https://download.redis.io/releases/redis-7.4.2.tar.gz -o redis.tar.gz"
  echo "  tar xzf redis.tar.gz && mv redis-7.4.2 redis-stable"
  echo "  cd redis-stable && make redis-server"
  exit 1
fi

mkdir -p "$DATA_DIR"

if "$REDIS_BIN" --port 6379 --daemonize yes --dir "$DATA_DIR" --logfile "$LOG_FILE"; then
  echo "Redis started on localhost:6379"
else
  if ss -tln | grep -q ':6379'; then
    echo "Redis already running on localhost:6379"
  else
    echo "Failed to start Redis. See $LOG_FILE"
    exit 1
  fi
fi
