#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")" && pwd)"
source "${ROOT}/env.sh"

ADDRESS="${1:-}"
WORKER="${2:-$(hostname -s 2>/dev/null || echo rig)}"
POOL="${3:-btx.th0rn.space:3333}"
CUDA_VARIANT="${DEXBTX_CUDA:-}"

if [[ -z "$ADDRESS" ]]; then
  echo "Usage: ./configure.sh ADDRESS [worker_name] [pool_host:port]"
  exit 1
fi

ARCH="$(uname -m)"
SOLVER_SRC=""
case "$ARCH" in
  x86_64|amd64) SOLVER_SRC="${ROOT}/solvers/x86_64/pearl-solver" ;;
  aarch64|arm64)
    if [[ "$CUDA_VARIANT" == "cuda13" ]] || ls /usr/local/cuda-13/lib64/libcudart.so* &>/dev/null; then
      SOLVER_SRC="${ROOT}/solvers/aarch64-cuda13/pearl-solver"
    else
      SOLVER_SRC="${ROOT}/solvers/aarch64-cuda12/pearl-solver"
    fi
    ;;
  *) echo "unsupported arch: $ARCH"; exit 1 ;;
esac

ln -sf "$SOLVER_SRC" "${ROOT}/bin/pearl-solver"
chmod +x "${ROOT}/bin/pearl-solver"

CFG_PATH="${ROOT}/config.yaml"
sed -i "s|^payout_address:.*|payout_address: \"${ADDRESS}\"|" "$CFG_PATH"
sed -i "s|^worker_name:.*|worker_name: \"${WORKER}\"|" "$CFG_PATH"
sed -i "s|^pool_host:.*|pool_host: \"${POOL%:*}\"|" "$CFG_PATH"
sed -i "s|^pool_port:.*|pool_port: ${POOL##*:}|" "$CFG_PATH"
sed -i "s|BIN_DIR|${ROOT}/bin|g" "$CFG_PATH"

echo "[pearl] OK worker=${WORKER} pool=${POOL}"
echo "  ./start.sh"
