From 1d7cb2eb15fed421dba35c059375662390f45fe3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9drix?= <cedric@abonnel.fr>
Date: Tue, 11 Mar 2025 20:47:40 +0100
Subject: [PATCH] =?UTF-8?q?m=C3=A9morise=20les=20options=20coch=C3=A9es?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 scripts/fetch_scripts.sh | 31 +++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/scripts/fetch_scripts.sh b/scripts/fetch_scripts.sh
index 8f2a847..34bfb69 100755
--- a/scripts/fetch_scripts.sh
+++ b/scripts/fetch_scripts.sh
@@ -1,8 +1,9 @@
 #!/bin/bash
 
-# Définition du dépôt et du fichier contenant la liste des dossiers
+# Définition du dépôt et des fichiers de configuration
 REPO_URL="https://git.abonnel.fr/cedricAbonnel/notes-techniques/raw/branch/main/scripts"
 DIR_LIST_FILE=".directories.txt"
+SELECTED_DIRS_FILE=".selected_dirs.txt"
 MANDATORY_DIR="common"
 
 # Télécharger la liste des dossiers disponibles
@@ -26,13 +27,24 @@ if [ ${#AVAILABLE_DIRS[@]} -eq 0 ]; then
   exit 1
 fi
 
+# Charger les dossiers précédemment sélectionnés
+if [ -f "$SELECTED_DIRS_FILE" ]; then
+  mapfile -t PREVIOUS_SELECTION < "$SELECTED_DIRS_FILE"
+else
+  PREVIOUS_SELECTION=()
+fi
+
 # Construire la liste pour whiptail
 CHOICES=()
 for dir in "${AVAILABLE_DIRS[@]}"; do
   if [ "$dir" == "$MANDATORY_DIR" ]; then
     continue  # Ne pas inclure le dossier obligatoire dans le choix
   fi
-  CHOICES+=("$dir" "" OFF)
+  if [[ " ${PREVIOUS_SELECTION[*]} " =~ " $dir " ]]; then
+    CHOICES+=("$dir" "" ON)
+  else
+    CHOICES+=("$dir" "" OFF)
+  fi
 done
 
 # Affichage du menu de sélection avec whiptail
@@ -46,9 +58,20 @@ if [ $? -ne 0 ]; then
   exit 1
 fi
 
-# Ajouter le dossier obligatoire
+# Convertir la sélection en tableau
 SELECTED_DIRS_ARRAY=("$MANDATORY_DIR" $(echo "$SELECTED_DIRS" | tr -d '"'))
 
+# Enregistrer la sélection actuelle
+echo "${SELECTED_DIRS_ARRAY[@]}" > "$SELECTED_DIRS_FILE"
+
+# Identifier les dossiers à supprimer (ceux qui ne sont plus sélectionnés)
+for dir in "${PREVIOUS_SELECTION[@]}"; do
+  if [[ ! " ${SELECTED_DIRS_ARRAY[*]} " =~ " $dir " ]]; then
+    echo "🗑 Suppression du dossier $dir..."
+    rm -rf "$dir"
+  fi
+done
+
 # Télécharger ou mettre à jour les fichiers pour chaque dossier sélectionné
 for TARGET_DIR in "${SELECTED_DIRS_ARRAY[@]}"; do
   LIST_FILE=".list_files.txt"
@@ -98,4 +121,4 @@ done
 # Nettoyage
 rm -rf "$TMP_DIR"
 
-echo "🚀 Tous les scripts sélectionnés ont été mis à jour et sont exécutables."
+echo "🚀 Tous les scripts sélectionnés ont été mis à jour et