#!/bin/bash
# FWS — installe/actualise Proton-GE (GloriousEggroll) pour Steam :
# meilleure compatibilité des jeux Windows que le Proton officiel.
# S'exécute en UTILISATEUR (installe dans ~/.steam/root/compatibilitytools.d).
set -u
say()  { printf '\n\033[1;34m==> %s\033[0m\n' "$*"; }
fail() { printf '\033[1;31m  ✗ %s\033[0m\n' "$*"; read -rp "Entrée pour fermer. " _; exit 1; }

[ "$(id -u)" -eq 0 ] && fail "à lancer en utilisateur normal (pas root) : l'outil s'installe dans ton Steam."

API="https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest"
DEST="$HOME/.steam/root/compatibilitytools.d"

say "Recherche de la dernière version de Proton-GE…"
JSON="$(curl -fsSL "$API")" || fail "GitHub inaccessible (réseau ?)"
URL="$(printf '%s' "$JSON" | grep -o '"browser_download_url": *"[^"]*\.tar\.gz"' | cut -d'"' -f4 | head -1)"
SUM_URL="$(printf '%s' "$JSON" | grep -o '"browser_download_url": *"[^"]*\.sha512sum"' | cut -d'"' -f4 | head -1)"
[ -n "$URL" ] || fail "archive introuvable dans la release GitHub"
NAME="$(basename "$URL" .tar.gz)"

if [ -d "$DEST/$NAME" ]; then
    say "$NAME est déjà installé ✔"
    read -rp "Entrée pour fermer. " _; exit 0
fi

TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
say "Téléchargement de $NAME (~450 Mo)…"
curl -fL --progress-bar -o "$TMP/$NAME.tar.gz" "$URL" || fail "téléchargement échoué"

if [ -n "$SUM_URL" ]; then
    say "Vérification de l'intégrité (sha512)…"
    curl -fsSL -o "$TMP/sum" "$SUM_URL" \
        && (cd "$TMP" && sed "s|[^ ]*\.tar\.gz|$NAME.tar.gz|" sum | sha512sum -c -) \
        || fail "somme de contrôle invalide — archive corrompue ?"
fi

say "Installation dans $DEST…"
mkdir -p "$DEST"
tar -xzf "$TMP/$NAME.tar.gz" -C "$DEST" || fail "extraction échouée"

say "$NAME installé ✔"
echo "  Dans Steam : Paramètres → Compatibilité → activer, puis choisir"
echo "  « $NAME » (ou par jeu : Propriétés → Compatibilité)."
echo "  Redémarre Steam pour qu'il apparaisse."
read -rp "Entrée pour fermer. " _
