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

# Asetukset
INSTALL_DIR="$HOME/.local/bin"
DESKTOP_DIR="$HOME/.local/share/applications"
AUTOSTART_DIR="$HOME/.config/autostart"
APPIMAGE_NAME="rustdesk.AppImage"
DESKTOP_FILE="rustdesk.desktop"
AUTOSTART_FILE="rustdesk-autostart.desktop"

mkdir -p "$INSTALL_DIR" "$DESKTOP_DIR" "$AUTOSTART_DIR"

echo "==> Yritetään hakea uusin RustDesk .deb ja asentaa se"
LATEST_DEB_URL="$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk/releases/latest \
  | grep -Eo 'https://[^"]+rustdesk[^"]*x86_64\.deb' | head -n1 || true)"

if [[ -n "${LATEST_DEB_URL}" ]]; then
  echo "==> Ladataan: $LATEST_DEB_URL"
  cd /tmp
  curl -fLO "$LATEST_DEB_URL"
  DEB_FILE="$(basename "$LATEST_DEB_URL")"

  echo "==> Asennetaan .deb"
  if sudo apt install "./$DEB_FILE" -y; then
    echo "==> .deb asennettu"
    # Tehdään käynnistyskuvake jos paketti ei sitä luonut
    if [[ ! -f "$DESKTOP_DIR/$DESKTOP_FILE" ]] && command -v rustdesk >/dev/null 2>&1; then
      cat > "$DESKTOP_DIR/$DESKTOP_FILE" <<EOF
[Desktop Entry]
Name=RustDesk
Exec=rustdesk
Type=Application
Terminal=false
Categories=Network;RemoteAccess;
EOF
      update-desktop-database "$HOME/.local/share/applications" || true
    fi
    echo "Valmis: RustDesk .deb toimii."
    exit 0
  else
    echo "==> .deb-asennus epäonnistui, yritetään korjata riippuvuudet"
    sudo apt --fix-broken install -y || true
    if sudo apt install "./$DEB_FILE" -y; then
      echo "Valmis: RustDesk .deb toimii korjauksen jälkeen."
      exit 0
    else
      echo "==> .deb ei onnistunut. Siirrytään AppImage-versioon."
    fi
  fi
else
  echo "==> Uusimman .deb-URL:n haku epäonnistui. Siirrytään AppImage-versioon."
fi

echo "==> Ladataan AppImage"
LATEST_APPIMAGE_URL="$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk/releases/latest \
  | grep -Eo 'https://[^"]+rustdesk[^"]*x86_64\.AppImage' | head -n1 || true)"

if [[ -z "${LATEST_APPIMAGE_URL}" ]]; then
  echo "Virhe: AppImage-URL:n automaattihaku epäonnistui."
  echo "Voit hakea sen käsin: https://github.com/rustdesk/rustdesk/releases"
  exit 1
fi

curl -fLo "$INSTALL_DIR/$APPIMAGE_NAME" "$LATEST_APPIMAGE_URL"
chmod +x "$INSTALL_DIR/$APPIMAGE_NAME"

echo "==> Luodaan työpöytäkuvake"
cat > "$DESKTOP_DIR/$DESKTOP_FILE" <<EOF
[Desktop Entry]
Name=RustDesk
Exec=$INSTALL_DIR/$APPIMAGE_NAME
Type=Application
Terminal=false
Categories=Network;RemoteAccess;
EOF
update-desktop-database "$HOME/.local/share/applications" || true

echo "==> (Valinnainen) Automaattikäynnistys sisäänkirjautuessa"
cat > "$AUTOSTART_DIR/$AUTOSTART_FILE" <<EOF
[Desktop Entry]
Type=Application
Name=RustDesk Autostart
Exec=$INSTALL_DIR/$APPIMAGE_NAME
X-LXQt-Need-Tray=true
X-GNOME-Autostart-enabled=true
EOF

echo "Valmis: RustDesk AppImage asennettu. Kuvake löytyy valikosta. Autostart on päällä."
