#!/bin/sh
# Foxora CLI installer. Kept separate from install.sh while the Desktop + Core
# installer owns the primary Foxora installation command.
set -eu

REPO="foxora-ai/releases"
BIN_DIR="${FOXORA_BIN_DIR:-$HOME/.local/bin}"
LOCAL="${FOXORA_INSTALL_LOCAL:-}"

os="$(uname -s)"; arch="$(uname -m)"
case "$os-$arch" in
  Darwin-arm64)              triple="aarch64-apple-darwin" ;;
  Darwin-x86_64)             triple="x86_64-apple-darwin" ;;
  Linux-x86_64)              triple="x86_64-unknown-linux-gnu" ;;
  Linux-aarch64|Linux-arm64) triple="aarch64-unknown-linux-gnu" ;;
  *) echo "foxora: unsupported platform $os-$arch" >&2; exit 1 ;;
esac

tmp="$(mktemp -d)"; trap 'rm -rf "$tmp"' EXIT
sha256() { if command -v shasum >/dev/null 2>&1; then shasum -a 256 "$1" | awk '{print $1}'; else sha256sum "$1" | awk '{print $1}'; fi; }

echo "foxora: installing CLI ($triple)…"
if [ -n "$LOCAL" ]; then
  cli="$LOCAL/runtimes/tui/target/$triple/release/foxora"
  [ -x "$cli" ] || cli="$LOCAL/runtimes/tui/target/release/foxora"
  [ -x "$cli" ] || { echo "foxora: no local CLI binary — build runtimes/tui first" >&2; exit 1; }
  cp "$cli" "$tmp/foxora"
else
  tag="${FOXORA_VERSION:-}"
  [ -n "$tag" ] || tag="$(curl -fsSL "https://api.github.com/repos/$REPO/releases" \
    | grep -o '"tag_name": *"cli-v[^"]*"' | head -1 | sed 's/.*"\(cli-v[^"]*\)"/\1/')"
  [ -n "$tag" ] || { echo "foxora: no CLI release found" >&2; exit 1; }
  base="https://github.com/$REPO/releases/download/$tag"; asset="foxora-$triple.tar.gz"
  curl -fsSL "$base/$asset" -o "$tmp/$asset"
  curl -fsSL "$base/$asset.sha256" -o "$tmp/$asset.sha256"
  [ "$(awk '{print $1}' "$tmp/$asset.sha256")" = "$(sha256 "$tmp/$asset")" ] \
    || { echo "foxora: CLI checksum mismatch — aborting" >&2; exit 1; }
  tar -xzf "$tmp/$asset" -C "$tmp"
fi

chmod +x "$tmp/foxora"; mkdir -p "$BIN_DIR" 2>/dev/null || true
if [ -w "$BIN_DIR" ]; then
  mv "$tmp/foxora" "$BIN_DIR/foxora"
elif command -v sudo >/dev/null 2>&1 && sudo mv "$tmp/foxora" "$BIN_DIR/foxora"; then
  :
else
  BIN_DIR="$HOME/.local/bin"; mkdir -p "$BIN_DIR"
  mv "$tmp/foxora" "$BIN_DIR/foxora"
fi

"$BIN_DIR/foxora" setup
case ":$PATH:" in *":$BIN_DIR:"*) : ;; *) echo "  add $BIN_DIR to your PATH, then run: foxora" ;; esac
