#!/bin/bash # Couleurs de texte NOIR='\e[30m' ROUGE='\e[31m' VERT='\e[32m' JAUNE='\e[33m' BLEU='\e[34m' ROSE='\e[35m' CYAN='\e[36m' BLANC='\e[37m' # Couleurs de fond FOND_NOIR='\e[40m' FOND_ROUGE='\e[41m' FOND_VERT='\e[42m' FOND_JAUNE='\e[43m' FOND_BLEU='\e[44m' FOND_ROSE='\e[45m' FOND_CYAN='\e[46m' FOND_BLANC='\e[47m' # Effets GRAS='\e[1m' SOULIGNE='\e[4m' CLIGNOTANT='\e[5m' INVERSE='\e[7m' NORMAL='\e[0m' #Vérification des prérequis echo -e "$BLEU""Vérification si les prérequis sont disponibles""$NORMAL" LISTE_APPLIS="curl basename php" BIN_DIR="$HOME/bin" AUTOPOST_DIR="$HOME/autopost" # Vérifier si le dossier bin existe, sinon le créer echo -e "$BLEU""Vérification de la présence du dossier bin""$NORMAL" if [ ! -d "$BIN_DIR" ]; then mkdir -p "$BIN_DIR" fi # Téléchargement et installation du script de post echo -e "$BLEU""Téléchargement de autopost""$NORMAL" # Création des répertoires si inexistants mkdir -p "$AUTOPOST_DIR" # Télécharger les fichiers dans autopost # Liste des fichiers à vérifier et mettre à jour declare -A FILES FILES["$HOME/autopost/analyzer.sh"]="https://tig.unfr.pw/UNFR/postauto/raw/branch/main/autopost/analyzer.sh" FILES["$HOME/autopost/posteur.sh"]="https://tig.unfr.pw/UNFR/postauto/raw/branch/main/autopost/posteur.sh" FILES["$HOME/autopost/common.sh"]="https://tig.unfr.pw/UNFR/postauto/raw/branch/main/autopost/common.sh" FILES["$HOME/bin/postauto"]="https://tig.unfr.pw/UNFR/postauto/raw/branch/main/bin/postauto" # Vérification et mise à jour des fichiers for LOCAL_FILE in "${!FILES[@]}"; do URL="${FILES[$LOCAL_FILE]}" TMP_FILE=$(mktemp) # Télécharger le fichier distant curl -s "$URL" -o "$TMP_FILE" # Comparer avec le fichier local et mettre à jour si nécessaire if ! diff -q "$LOCAL_FILE" "$TMP_FILE" > /dev/null 2>&1; then #diff -u "$LOCAL_FILE" "$TMP_FILE" || echo "Le fichier local n'existe pas encore." echo "Mise à jour de $LOCAL_FILE..." mv "$TMP_FILE" "$LOCAL_FILE" chmod +x "$LOCAL_FILE" else echo "Aucune mise à jour nécessaire pour $LOCAL_FILE." rm "$TMP_FILE" fi done # Définir le chemin du fichier bashrc BASHRC_FILE="$HOME/.bashrc" # Marqueurs pour identifier la section ajoutée DEBUT_MARKER="# DEBUT COMPLETION POSTAUTO" FIN_MARKER="# FIN COMPLETION POSTAUTO" # Le code de complétion à ajouter, encadré par les marqueurs read -r -d '' COMPLETION_CODE << 'EOF' # DEBUT COMPLETION POSTAUTO # Fonction de complétion pour ton script _autopost_completion() { local cur prev opts cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" # Liste des commandes disponibles opts="start stop restart show status createdb add log check update" # Si l'utilisateur est en train de taper le premier argument, proposer les commandes if [ $COMP_CWORD -eq 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi # (Optionnel) Pour la sous-commande "add", proposer des fichiers en complétion if [ $COMP_CWORD -eq 2 ] && [ "${COMP_WORDS[1]}" = "add" ]; then COMPREPLY=( $(compgen -f -- "${cur}") ) return 0 fi } # Associer la fonction de complétion à ton script (ici, 'postauto' est le nom de la commande) complete -F _autopost_completion postauto # FIN COMPLETION POSTAUTO EOF # Vérifier si le code est déjà présent dans le fichier bashrc echo "Modification de la configuration de complétion dans $BASHRC_FILE..." if grep -q "$DEBUT_MARKER" "$BASHRC_FILE"; then # Faire une sauvegarde de sécurité du fichier .bashrc cp "$BASHRC_FILE" "${BASHRC_FILE}.bak" echo "Sauvegarde réalisée dans ${BASHRC_FILE}.bak" # Supprimer le bloc de code entre les marqueurs (inclusifs) sed -i "/$DEBUT_MARKER/,/$FIN_MARKER/d" "$BASHRC_FILE" fi # Ajouter une ligne vide pour séparer (optionnel) echo "" >> "$BASHRC_FILE" # Ajouter le code de complétion echo "$COMPLETION_CODE" >> "$BASHRC_FILE" echo "Mise à jour effectuée." echo "Suppression du script après exécution..." rm -- "$0"