deplacement de scripts
This commit is contained in:
100
scripts/fetch_scripts.sh
Executable file
100
scripts/fetch_scripts.sh
Executable file
@@ -0,0 +1,100 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Définition du dépôt et du fichier contenant la liste des dossiers
|
||||
REPO_URL="https://git.abonnel.fr/cedricAbonnel/notes-techniques/raw/branch/main/notes/scripts"
|
||||
DIR_LIST_FILE=".directories.txt"
|
||||
MANDATORY_DIR="common"
|
||||
|
||||
# Télécharger la liste des dossiers disponibles
|
||||
TMP_DIR=$(mktemp -d)
|
||||
DIR_LIST_PATH="$TMP_DIR/$DIR_LIST_FILE"
|
||||
|
||||
wget -q -O "$DIR_LIST_PATH" "$REPO_URL/$DIR_LIST_FILE"
|
||||
|
||||
# Vérifier que la liste a bien été téléchargée
|
||||
if [ ! -s "$DIR_LIST_PATH" ]; then
|
||||
echo "❌ Erreur : Impossible de récupérer la liste des dossiers."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Lire les dossiers disponibles dans un tableau
|
||||
mapfile -t AVAILABLE_DIRS < "$DIR_LIST_PATH"
|
||||
|
||||
# Vérifier qu'il y a bien des dossiers disponibles
|
||||
if [ ${#AVAILABLE_DIRS[@]} -eq 0 ]; then
|
||||
echo "❌ Aucun dossier disponible dans la liste."
|
||||
exit 1
|
||||
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)
|
||||
done
|
||||
|
||||
# Affichage du menu de sélection avec whiptail
|
||||
SELECTED_DIRS=$(whiptail --title "Sélection des dossiers" --checklist \
|
||||
"Sélectionnez les dossiers à télécharger (le dossier '$MANDATORY_DIR' est obligatoire) :" 20 60 10 \
|
||||
"${CHOICES[@]}" 3>&1 1>&2 2>&3)
|
||||
|
||||
# Vérifier si l'utilisateur a annulé
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ Annulation par l'utilisateur."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Ajouter le dossier obligatoire
|
||||
SELECTED_DIRS="$MANDATORY_DIR $SELECTED_DIRS"
|
||||
|
||||
# Télécharger ou mettre à jour les fichiers pour chaque dossier sélectionné
|
||||
for TARGET_DIR in $SELECTED_DIRS; do
|
||||
LIST_FILE=".list_files.txt"
|
||||
LIST_PATH="$TMP_DIR/$LIST_FILE"
|
||||
|
||||
echo "🔹 Récupération des scripts de '$TARGET_DIR'..."
|
||||
|
||||
# Télécharger la liste des fichiers
|
||||
wget -q -O "$LIST_PATH" "$REPO_URL/$TARGET_DIR/$LIST_FILE"
|
||||
|
||||
if [ ! -s "$LIST_PATH" ]; then
|
||||
echo "❌ Erreur : Impossible de récupérer la liste des fichiers pour $TARGET_DIR."
|
||||
continue
|
||||
fi
|
||||
|
||||
# Création du répertoire s'il n'existe pas
|
||||
mkdir -p "$TARGET_DIR"
|
||||
|
||||
# Télécharger chaque fichier listé
|
||||
while read -r file; do
|
||||
FILE_NAME=$(basename "$file")
|
||||
FILE_PATH="$TARGET_DIR/$FILE_NAME"
|
||||
|
||||
if [ -f "$FILE_PATH" ]; then
|
||||
echo " ↻ Mise à jour de $FILE_NAME..."
|
||||
else
|
||||
echo " ↳ Téléchargement de $FILE_NAME..."
|
||||
fi
|
||||
wget -q -O "$FILE_PATH" "$file"
|
||||
done < "$LIST_PATH"
|
||||
|
||||
# Supprimer les fichiers obsolètes
|
||||
for existing_file in "$TARGET_DIR"/*; do
|
||||
if [ -f "$existing_file" ] && ! grep -qx "$(basename "$existing_file")" "$LIST_PATH"; then
|
||||
echo " 🗑 Suppression de $(basename "$existing_file")..."
|
||||
rm "$existing_file"
|
||||
fi
|
||||
done
|
||||
|
||||
# Rendre exécutables les scripts téléchargés
|
||||
chmod +x "$TARGET_DIR"/*.sh
|
||||
|
||||
echo "✅ Scripts de '$TARGET_DIR' mis à jour avec succès."
|
||||
done
|
||||
|
||||
# Nettoyage
|
||||
rm -rf "$TMP_DIR"
|
||||
|
||||
echo "🚀 Tous les scripts sélectionnés ont été mis à jour et sont exécutables."
|
||||
Reference in New Issue
Block a user