#!/bin/sh
set -e

BASE_URL="${NEXTPAY_CLI_BASE:-https://nextpay-v3-dev.nextfinancial.io/cli}"
ROOT_URL="${BASE_URL%/cli}"

# Derive default environment from the URL this script was served from
if echo "$BASE_URL" | grep -q "nextpay-v3-dev"; then
  DEFAULT_ENV="dev"
else
  DEFAULT_ENV="prod"
fi

OS="$(uname -s)"
ARCH="$(uname -m)"

case "$OS" in
  Linux)
    case "$ARCH" in
      x86_64)  BINARY="nextpay-linux-x86_64" ;;
      aarch64|arm64) BINARY="nextpay-linux-arm64" ;;
      *) echo "Unsupported architecture: $ARCH" >&2; exit 1 ;;
    esac
    ;;
  Darwin)
    case "$ARCH" in
      x86_64)  BINARY="nextpay-macos-x86_64" ;;
      arm64)   BINARY="nextpay-macos-arm64" ;;
      *) echo "Unsupported architecture: $ARCH" >&2; exit 1 ;;
    esac
    ;;
  *)
    echo "Unsupported OS: $OS" >&2
    exit 1
    ;;
esac

DOWNLOAD_URL="$BASE_URL/$BINARY"

# Choose install prefix: system-wide if writable/sudoable, otherwise user-local
if [ -w /usr/local/bin ] 2>/dev/null; then
  LIB_DIR="/usr/local/lib/nextpay"
  BIN_DIR="/usr/local/bin"
elif sudo -n true 2>/dev/null; then
  LIB_DIR="/usr/local/lib/nextpay"
  BIN_DIR="/usr/local/bin"
else
  LIB_DIR="${HOME}/.local/lib/nextpay"
  BIN_DIR="${HOME}/.local/bin"
  mkdir -p "$BIN_DIR"
fi

REAL_BIN="$LIB_DIR/nextpay"
WRAPPER="$BIN_DIR/nextpay"
TMP_FILE="/tmp/nextpay-cli-download"

echo "Downloading NextPay CLI ($OS/$ARCH)..."
curl -fsSL "$DOWNLOAD_URL" -o "$TMP_FILE"

# Verify we got a binary, not an HTML error page (SPA fallback returns 200 with HTML)
if head -c 15 "$TMP_FILE" | grep -qi "<!doctype\|<html"; then
  rm -f "$TMP_FILE"
  echo "" >&2
  echo "Error: Binary not available for $OS/$ARCH yet." >&2
  echo "Check $BASE_URL for updates." >&2
  exit 1
fi

chmod +x "$TMP_FILE"

# Install real binary to lib dir
echo "Installing to $REAL_BIN..."
if [ -w "$LIB_DIR" ] 2>/dev/null || mkdir -p "$LIB_DIR" 2>/dev/null; then
  mv "$TMP_FILE" "$REAL_BIN"
else
  sudo mkdir -p "$LIB_DIR"
  sudo mv "$TMP_FILE" "$REAL_BIN"
fi

# Create wrapper that sets the default environment
WRAPPER_CONTENT="#!/bin/sh
export NEXTPAY_ENV=\"\${NEXTPAY_ENV:-$DEFAULT_ENV}\"
exec \"$REAL_BIN\" \"\$@\""

if [ -w "$BIN_DIR" ]; then
  printf '%s\n' "$WRAPPER_CONTENT" > "$WRAPPER"
  chmod +x "$WRAPPER"
else
  printf '%s\n' "$WRAPPER_CONTENT" | sudo tee "$WRAPPER" > /dev/null
  sudo chmod +x "$WRAPPER"
fi

echo ""
echo "NextPay CLI installed successfully!"
echo "Run 'nextpay --version' to verify."

if [ "$BIN_DIR" = "${HOME}/.local/bin" ]; then
  case ":$PATH:" in
    *":${HOME}/.local/bin:"*) ;;
    *)
      echo ""
      echo "Note: Add ~/.local/bin to your PATH if not already set:"
      echo "  export PATH=\"\$HOME/.local/bin:\$PATH\""
      ;;
  esac
fi

echo ""
echo "Want your AI agent to use NextPay? Paste this into any agent:"
echo "  Read $ROOT_URL/skill.md and follow the instructions to set up NextPay"
