#!/bin/bash set -uo pipefail # Script Bash - prep.sh # Auteur : Cédric Abonnel # Description : Prépare les fichiers de DOC et listing. # Vérification du répertoire de travail [[ ! -d "local/bin" ]] && { echo "Erreur : lancer depuis la racine du projet scripts-bash"; exit 1; } # Point 1 : log_dir créé immédiatement, avant tout appel à log() log_dir="${XDG_STATE_HOME:-$HOME/.local/state}/scripts-bash" mkdir -p "$log_dir" log_file="${log_dir}/a5l-scripts_bash_prep-$(date '+%Y%m%d-%H%M%S')-$$.log" error() { local error_message="$1" log "ERREUR: $error_message" echo "Erreur: $error_message" exit 1 } # Point 2 : garde sur $1 vide log() { if [ -n "$1" ]; then echo "$(date '+%Y-%m-%d %H:%M:%S') - $$ - $1" >> "$log_file" echo "$1" fi } create_dir() { 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 } # Point 3 : find remplace ls (robuste aux espaces et à la locale) list_files() { local dir="$1" local dest="$2" log "Lister les fichiers présents dans $dir" find "$dir" -maxdepth 1 -mindepth 1 -type f -exec basename {} \; | sort > "$dest" } log "Début du script" list_files "local/bin" ".config/files_local-bin" source_dir="local/share/doc/scripts-bash" destination_dir="local/share/man/man1" create_dir "$destination_dir" list_files "$source_dir" ".config/files_local-share-doc" log "Créer les pages MAN" if ! command -v pandoc &> /dev/null; then log "Pandoc n'est pas installé." if [ -x "$(command -v apt)" ]; then log "Installation de Pandoc via APT..." sudo apt update && sudo apt install -y pandoc elif [ -x "$(command -v dnf)" ]; then log "Installation de Pandoc via DNF..." sudo dnf install -y pandoc elif [ -x "$(command -v yum)" ]; then log "Installation de Pandoc via YUM..." sudo yum install -y pandoc else error "Gestionnaire de paquets non pris en charge. Installez Pandoc manuellement." fi command -v pandoc &> /dev/null || error "L'installation de Pandoc a échoué." log "Pandoc installé avec succès." fi # Points 4 et 5 : lecture directe du fichier généré, erreur si source absente mapfile -t fileslist_local < ".config/files_local-share-doc" for file in "${fileslist_local[@]}"; do new_name="${file%.*}" [ ! -f "$source_dir/$file" ] && error "Fichier source introuvable : $source_dir/$file" 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 "Page MAN créée : $destination_dir/$new_name" done list_files "local/share/man/man1" ".config/files_local-share-man" list_files "local/share/ytdll" ".config/files_local-share-ytdll" list_files "local/share/ytdll/lib" ".config/files_local-share-ytdll-lib" log "Fin du script."