#!/bin/bash # Script Bash - prep.sh # Auteur : Cédric Abonnel # Description : Prépare les fichiers de DOC et listing. # Version 23.12.14 # - Modification du traitement des résumés des DOC. La fonctionnalité n'est pas encore accessible. # Spécifier le chemin du fichier journal log_dir="$HOME/log" log_file="${log_dir}/a5l-scripts_bash_prep-$(date '+%Y%m%d-%H%M%S')-$$.log" # Fonction pour afficher un message d'erreur et quitter le script en cas d'erreur error() { local error_message="$1" log "ERREUR: $error_message" echo "Erreur: $error_message" exit 1 } # Fonction pour enregistrer les messages de journal log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $$ - $1" >> "$log_file" echo "$1" } create_dir() { # S'assurer que le répertoire de destination existe, sinon, le créer log "Tentative de création du dossier $1" if [ ! -d "$1" ]; then mkdir -p "$1" || error "Impossible de créer le répertoire $1" log " _ Le répertoire $1 a été créé." else log " _ Le répertoire $1 existe déjà." fi } log "Lister les fichiers présents dans local/bin" ls local/bin/ -c1 >.config/files_local-bin ######## # 1. Lister des fichiers dans local/share/doc # 2. Générer les fichiers man dans local/share/man # 3. Lister des fichiers dans local/share/man # Spécifier le chemin du répertoire du dépôt Git local source_dir="local/share/doc" # Spécifier le chemin du répertoire destination_dir="local/share/man" create_dir "$destination_dir" log "Lister les fichiers présents dans local/share/doc" ls "$source_dir/" -c1 >.config/files_local-share-doc log "Creer les pages MAN" file_local_desc=.config/files_local-share-doc # Répertoire local/share/man ## Vérifier si Pandoc est installé if ! command -v pandoc &> /dev/null; then log "Pandoc n'est pas installé." # Vérifier la distribution pour utiliser le gestionnaire de paquets approprié if [ -x "$(command -v dnf)" ]; then log "Installation de Pandoc via DNF (Red Hat)..." sudo dnf install -y pandoc elif [ -x "$(command -v yum)" ]; then log "Installation de Pandoc via YUM (Red Hat)..." sudo dnf install -y pandoc elif [ -x "$(command -v apt)" ]; then log "Installation de Pandoc via APT (Debian)..." sudo apt update && sudo apt install -y pandoc else error "Le gestionnaire de paquets n'est pas pris en charge." fi # Vérifier à nouveau si Pandoc est installé if ! command -v pandoc &> /dev/null; then error "L'installation de Pandoc a échoué." else log "Pandoc a été installé avec succès." fi fi log " Traitement des fichiers à copier dans $destination_dir" # Génération des fihciers man log " Vérifier si le fichier $file_local_desc existe" if [ -e "$file_local_desc" ]; then log " Récupérer des fichiers installés" fileslist_local=$(cat $file_local_desc) log " Créer la page man" for file in $fileslist_local; do new_name="${file%.*}" # Supprimer l'extension md if [ -f "$source_dir/$file" ]; then pandoc -s "$source_dir/$file" -t man -o "$destination_dir/$new_name" || error "Impossible de créer la page 'man' $destination_dir/$new_name depuis $source_dir/$file" log " Creation de la page MAN $destination_dir/$new_name depuis $source_dir/$file" fi done else error " Le fichier $file_local_desc est introuvable." fi log "Lister les fichiers présents dans local/share/man" ls local/share/man/ -c1 >.config/files_local-share-man ######## # Résumé des DOC for fichier in local/share/doc/*.md; do echo "Résumé pour $fichier :" description_found=0 empty_line_encountered=false description_started=0 while IFS= read -r ligne; do if [ "$description_found" -eq 1 ] && [ "$description_started" -eq 1 ] && [ -n "$ligne" ]; then echo "$ligne" elif [ "$description_found" -eq 1 ] && [ "$description_started" -eq 0 ] && [ -n "$ligne" ]; then echo "$ligne" description_started=1 elif [ "$description_found" -eq 1 ] && [ "$description_started" -eq 1 ] && [ ! -n "$ligne" ]; then break elif [ "$ligne" = "# DESCRIPTION" ]; then description_found=1 fi done < "$fichier" echo "..." done