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