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

NEXO_ARCHIVE_URL="${NEXO_ARCHIVE_URL:-https://github.com/A5TUT0/nexo/archive/refs/heads/main.tar.gz}"

if ! command -v curl >/dev/null 2>&1; then
  echo "Error: curl es requerido para descargar Nexo." >&2
  exit 1
fi

if ! command -v tar >/dev/null 2>&1; then
  echo "Error: tar es requerido para descomprimir Nexo." >&2
  exit 1
fi

tmp_dir="$(mktemp -d)"
cleanup() {
  rm -rf "$tmp_dir"
}
trap cleanup EXIT

archive="$tmp_dir/nexo.tar.gz"
echo "Descargando Nexo desde $NEXO_ARCHIVE_URL"
curl -fsSL "$NEXO_ARCHIVE_URL" -o "$archive"
tar -xzf "$archive" -C "$tmp_dir"

core_pyproject="$(find "$tmp_dir" -path "*/nexo-core/pyproject.toml" -type f | head -n 1)"
if [[ -z "$core_pyproject" ]]; then
  echo "Error: no se encontro nexo-core/pyproject.toml en el paquete descargado." >&2
  exit 1
fi

core_dir="$(dirname "$core_pyproject")"

if command -v pipx >/dev/null 2>&1; then
  pipx install "$core_dir" --force
  echo "Nexo instalado con pipx."
elif command -v uv >/dev/null 2>&1; then
  uv tool install "$core_dir" --force
  echo "Nexo instalado con uv."
elif command -v pip >/dev/null 2>&1; then
  pip install --user "$core_dir" --upgrade
  echo "Nexo instalado con pip."
else
  echo "Error: instala pipx, uv o pip y vuelve a ejecutar este script." >&2
  exit 1
fi

if command -v nexo >/dev/null 2>&1; then
  nexo version
else
  echo "Nexo se instalo, pero el comando no esta en PATH todavia."
  echo "Abre una nueva terminal o revisa el PATH de tu instalador Python."
fi
