#!/bin/bash
# ------------------------------------------------------------------
# Titre        : Script d'installation automatique pour GeTax 2025 (Linux Ubuntu et dérivé, comme Mint)
# Description  : Installe Java, GeTax et crée les raccourcis menu/bureau.
# Auteur       : [Bernard Gisin]
# Date         : 14 Février 2026
# Version      : 1.xx (Mode Texte)
# Testé sur    : Linux Mint 22, Ubuntu 24.04
# Dépendances  : default-jre, tar
# Double cliquer sur le fichier : "install_getax_geek.run"  ou lancer dans un Terminal
# ------------------------------------------------------------------

# --- CONFIGURATION ---
SOURCE="$HOME/Apps/getax2025_96x96.png"
DEST01="$HOME/Apps"
DEST02="$HOME/Apps/0icons"
# On trouve le chemin officiel du Bureau (compatible Français 'Bureau' / Anglais 'Desktop')
# La commande xdg-user-dir est standard sur Mint.
DOSSIER_BUREAU=$(xdg-user-dir DESKTOP)

# --- FORCER LE TERMINAL ---
# On vérifie si le script est lancé dans un terminal interactif (TTY).
# Si ce n'est pas le cas (ex: double-clic depuis le bureau), on le relance dans un terminal.
if [ ! -t 0 ]; then
    # x-terminal-emulator est une commande générique sous Linux (Debian/Mint/Ubuntu)
    # qui lance le terminal par défaut du système.
    x-terminal-emulator -e "$0"
    exit 0
fi

read -p "Voulez-vous installer GeTax (dans le dossier Apps qui sera créé) (O/n) " rep1

if [[ $rep1 == "" || $rep1 == "o" || $rep1 == "O" ]]; then
  echo "Création du dossier $DEST01, s'il n'existe pas déjà."
  echo "Et copie des fichiers d'exécution de GeTax dans ce dossier."

  # 1. Déterminer la ligne où commence l'archive (après le marqueur __ARCHIVE_BELOW__)
  SKIP=$(awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0;}' "$0")

  # 2. Créer le dossier d'extraction
  mkdir -p "$DEST01"

  # 3. Extraire la partie binaire du présent fichier ($0)
  #echo "Extraction des fichiers..."
  tail -n +$SKIP "$0" | tar -xz -C "$DEST01"

  # 4. Crée in dossier pour l'icône et y place l'icône de GeTax2025
  echo "Création du dossier $DEST02 pour y placer l'icône de GeTax2025"
  mkdir -p "$DEST02"
  mv -n "$SOURCE" "$DEST02"
  rm -f "$SOURCE"

  # Au cas où l'on aurait mis des fichiers temporaires dans le dossier suivant
  #rm -rf /tmp/getax_install

  echo "Les fichiers d'exécutions de GeTax ont été installés dans le dossier $DEST01"
else
  echo "Pas d'installation de GeTax. (Taper Ctrl+C pour terminer.)"
fi

read -p "Voulez-vous créer sur le bureau une icône de lancement de GeTax (O/n) " rep2

if [[ $rep2 == "" || $rep2 == "o" || $rep2 == "O" ]]; then
  echo "Création sur le bureau d'une icône de lancement de GeTax."

  # Création d'une icône de lancement sur le bureau
  # La première ligne efface le contenu du fichier et y met la ligne : [Desktop Entry]
  ICI="$DOSSIER_BUREAU/getax2025.desktop"   #pour création sur le bureau
  #ICI="lance.desktop"  # pour des tests
  echo "[Desktop Entry]" > "$ICI"
  echo "Version=1.xx" >> "$ICI"
  echo "Type=Application" >> "$ICI"
  echo "Name=getax-pp-2025" >> "$ICI"
  echo "Comment=GeTax 2025, pour la déclaration d'impôts à Genève" >> "$ICI"
  echo "Exec=$DEST01/getax-pp-2025/getax-pp-2025" >> "$ICI"
  echo "Icon=$DEST02/getax2025_96x96.png" >> "$ICI"
  echo "Path=" >> "$ICI"
  echo "Terminal=false" >> "$ICI"
  echo "StartupNotify=false" >> "$ICI"

  # On assure aussi que le fichier .desktop est bien exécutable (au cas où)
  chmod 755 "$ICI"
  
  # On force le rafraîchissement (C'est l'équivalent du F5)
  # On peut cliquer sur le bureau, puis sur F5 pour mettre à jour les icônes.
  # Pour redémarrer le bureau Cinnamon, tapez Alt+F2, puis r, puis la touche ENTER
  touch "$DOSSIER_BUREAU"
else
  echo "Pas de création d'icône de lancement de GeTax."
fi

# 1. Test : Est-ce que Java est déjà installé ?
if command -v java &> /dev/null; then
  echo "Java est déjà installé, rien à faire de plus."
else
  # 2. Information à l'utilisateur
  echo "Java est nécessaire pour exécuter GeTax."
  echo "Ce composant n'est pas détecté sur votre système."

  read -p "Voulez-vous installer Java (O/n) " rep3

  if [[ $rep3 == "" || $rep3 == "o" || $rep3 == "O" ]]; then
    echo "Installation de java. Votre mot de passe administrateur sera nécessaire."

    # On force la réinitialisation du "ticket" sudo au cas où
    # pour être sûr de tester le mot de passe saisi.
    sudo -k
    
    # 3. Boucle de demande de mot de passe (pour gérer les erreurs de frappe)
    while true; do
      # Demande du mot de passe
      # read -s (silent) cache les caractères tapés
      # read -p (prompt) affiche le texte
      read -s -p "Veuillez entrer votre mot de passe administrateur : " PASSWORD
      echo "" # On ajoute un saut de ligne car 'read -s' n'en fait pas

      # Test du mot de passe
      # On envoie le mot de passe à sudo avec 'echo' et le pipe '|'
      # sudo -S lit ce mot de passe.
      # sudo -v (validate) vérifie si le mot de passe est bon sans lancer de commande.
      # &> /dev/null cache les messages d'erreur natifs de sudo.
      if echo "$PASSWORD" | sudo -S -v &> /dev/null; then
        echo "✅ Mot de passe accepté."
        # Le mot de passe est bon, on sort (break) de la boucle while
        break
      else
        echo "❌ Mot de passe incorrect. Veuillez réessayer."
        echo "   (Appuyez sur Ctrl+C si vous désirez annuler l'installation de Java)"
        echo ""
      fi
    done

    # 4. Installation de Java
    echo "# Mise à jour de la liste des paquets..."
    
    # -S  indique de prendre le mot de passe de la variable  $PASSWORD
    # -qq  est l'option "très silencieux". Je l'ai supprimée
    echo "$PASSWORD" | sudo -S apt-get update

    echo "# Installation de la Machine Virtuelle Java..."

    # On réinjecte le mot de passe pour être sûr (même si sudo a une mémoire tampon)
    echo "$PASSWORD" | sudo -S apt-get install -y default-jre

    # 5. Vérification finale
    if command -v java &> /dev/null; then
      echo "Java a été installé avec succès !"
    else
      echo "Une erreur est survenue lors de l'installation de Java."
    fi
  else
    echo "Java n'est pas installé, GeTax ne fonctionnera pas sans une machine virtuelle Java."
  fi
fi

echo
read -p "Installation terminée, presser sur la touche Enter pour quitter."

exit 0

# NE PAS SUPPRIMER LA LIGNE CI-DESSOUS
__ARCHIVE_BELOW__
