#!/bin/bash
# Glide Server – one-time installer for Mac
# Run: curl -fsSL glide.imazyn.com/install.sh | bash

set -e

INSTALL_DIR="$HOME/.glide-server"
SERVER_DIR="$INSTALL_DIR/server"
VENV_DIR="$INSTALL_DIR/venv"
DESKTOP="$HOME/Desktop"
PLIST="$HOME/Library/LaunchAgents/com.glide.server.plist"

echo ""
echo "  ┌─────────────────────────────────┐"
echo "  │   Installing Glide Server 🖱️    │"
echo "  └─────────────────────────────────┘"
echo ""

# ── 1. Download server files ──────────────────────────────────────────────────
echo "→ Downloading server files…"
mkdir -p "$SERVER_DIR"
curl -fsSL "https://glide.imazyn.com/server.zip" -o /tmp/glide-server.zip
unzip -o /tmp/glide-server.zip -d "$SERVER_DIR" > /dev/null
rm /tmp/glide-server.zip
echo "  ✓ Files downloaded"

# ── 2. Python venv + deps ─────────────────────────────────────────────────────
echo "→ Installing Python dependencies (takes ~30s)…"
python3 -m venv "$VENV_DIR"
"$VENV_DIR/bin/pip" install --quiet --upgrade pip
"$VENV_DIR/bin/pip" install --quiet -r "$SERVER_DIR/requirements.txt"
echo "  ✓ Dependencies installed"

# ── 3. Desktop launcher (.command = double-clickable on Mac) ──────────────────
echo "→ Creating Desktop shortcut…"
LAUNCHER="$DESKTOP/Start Glide.command"
cat > "$LAUNCHER" <<'LAUNCHER_EOF'
#!/bin/bash
INSTALL_DIR="$HOME/.glide-server"
VENV_DIR="$INSTALL_DIR/venv"
SERVER_DIR="$INSTALL_DIR/server"

clear
echo ""
echo "  ┌─────────────────────────────────┐"
echo "  │        Glide Server 🖱️          │"
echo "  │   Open Glide on your phone to   │"
echo "  │   connect. Close this window to │"
echo "  │   stop the server.              │"
echo "  └─────────────────────────────────┘"
echo ""

# Grant Accessibility + Input Monitoring permissions prompt
"$VENV_DIR/bin/python3" "$SERVER_DIR/main.py"
LAUNCHER_EOF
chmod +x "$LAUNCHER"
echo "  ✓ Desktop shortcut created: 'Start Glide.command'"

# ── 4. Auto-start on login via launchd ───────────────────────────────────────
echo "→ Setting up auto-start on login…"
mkdir -p "$HOME/Library/LaunchAgents"
cat > "$PLIST" <<PLIST_EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.glide.server</string>
  <key>ProgramArguments</key>
  <array>
    <string>$VENV_DIR/bin/python3</string>
    <string>$SERVER_DIR/main.py</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <true/>
  <key>StandardErrorPath</key>
  <string>$INSTALL_DIR/glide-error.log</string>
  <key>StandardOutPath</key>
  <string>$INSTALL_DIR/glide-out.log</string>
</dict>
</plist>
PLIST_EOF

launchctl unload "$PLIST" 2>/dev/null || true
launchctl load "$PLIST"
echo "  ✓ Glide will auto-start every time you log in"

# ── Done ──────────────────────────────────────────────────────────────────────
echo ""
echo "  ┌─────────────────────────────────────────────────┐"
echo "  │  ✅  Glide is installed and running!            │"
echo "  │                                                 │"
echo "  │  • Open Glide on your phone and tap your Mac   │"
echo "  │  • Glide auto-starts every login               │"
echo "  │  • To start manually: double-click             │"
echo "  │    'Start Glide.command' on your Desktop       │"
echo "  └─────────────────────────────────────────────────┘"
echo ""
