From 052973faa25dd0b8dfa36c54eaba751285304cd3 Mon Sep 17 00:00:00 2001 From: cedricAbonnel Date: Sun, 19 Nov 2023 17:10:15 +0100 Subject: [PATCH] =?UTF-8?q?Gestion=20des=20pages=20MAN=20utilisateurs=20cr?= =?UTF-8?q?=C3=A9=C3=A9e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files_local-share-doc | 1 + files_local-share-man | 1 + install.sh | 154 +++++++++++++++++++++++++----- local/share/doc/playlist_gen.1.md | 56 +++++++++++ local/share/man/playlist_gen.1 | 90 +++++++++++++++++ prep.sh | 105 +++++++++++++++++++- 6 files changed, 381 insertions(+), 26 deletions(-) create mode 100644 files_local-share-doc create mode 100644 files_local-share-man create mode 100644 local/share/doc/playlist_gen.1.md create mode 100644 local/share/man/playlist_gen.1 diff --git a/files_local-share-doc b/files_local-share-doc new file mode 100644 index 0000000..848190b --- /dev/null +++ b/files_local-share-doc @@ -0,0 +1 @@ +playlist_gen.1.md diff --git a/files_local-share-man b/files_local-share-man new file mode 100644 index 0000000..527ca4d --- /dev/null +++ b/files_local-share-man @@ -0,0 +1 @@ +playlist_gen.1 diff --git a/install.sh b/install.sh index 7a93047..7414bb2 100755 --- a/install.sh +++ b/install.sh @@ -1,11 +1,5 @@ #!/bin/bash -# Spécifier le chemin du répertoire du dépôt Git local -repository_dir="local/bin" - -# Spécifier le chemin du répertoire ~/.local/bin -destination_dir="$HOME/.local/bin" - # Spécifier le chemin du fichier journal log_dir="$HOME/log" log_file="${log_dir}/a5l-scripts_bash-$(date '+%Y%m%d-%H%M%S')-$$.log" @@ -21,24 +15,137 @@ error() { # 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 "Debut du script" ## Post traitement : log # S'assurer que le répertoire de destination existe, sinon, le créer -if [ ! -d "$log_dir" ]; then - mkdir -p "$log_dir" || error "Impossible de créer le répertoire $log_dir" - log " _ Le répertoire $log_dir a été créé." +create_dir ${log_dir} + +log "Rafraichissement des listes de fichiers" +./prep.sh + + + +#### .local/share/doc #### + +## Declarations ## + +# Spécifier le chemin du répertoire destination +destination_dir="$HOME/.local/share/doc" + +# Spécifier le chemin du répertoire du dépôt Git local +source_dir="local/share/doc" + +file_local_desc=files_local-share-doc + +## Traitement ## + +log "Debut du Traitement pour $destination_dir" + + +# S'assurer que le répertoire de destination existe, sinon, le créer +create_dir "$destination_dir" + +log " _ Traitement des fichiers à copier dans $destination_dir" +# Copier sélectivement les fichiers du dépôt Git local vers ~/.local/bin en préservant la structure +# Vérifier si le fichier "$file_local_desc" existe +if [ -e "$file_local_desc" ]; then + # Récupérer des fichiers installés + fileslist_local=$(cat "$file_local_desc") + + # Utilisez la commande rsync pour copier les fichiers + log " __ Copie des fichiers" + rsync -av --files-from="$file_local_desc" "$source_dir/" "$destination_dir/" >> "$log_file" 2>&1 || error "Échec de la copie avec rsync" + +else + error "Le fichier '$file_local_desc' n'existe pas. Votre dépôt Git local n'est pas complet ou quelque chose s'est mal passé." fi -## Traitement de .local/bin -# Récupérer des fichiers installés -./prep.sh -files_local_bin=$(cat files_local-bin) + +#### .local/share/man #### + +## Declarations ## + +# Spécifier le chemin du répertoire ~/.local/bin +destination_dir="$HOME/.local/share/man" + +# Spécifier le chemin du répertoire du dépôt Git local +source_dir="local/share/man" + +file_local_desc=files_local-share-man + + +## Traitement ## + +log "Debut du Traitement pour $destination_dir" + +# S'assurer que le répertoire de destination existe, sinon, le créer +create_dir "$destination_dir" + +# Vérifier si le répertoire destination est déjà dans le PATH +if [[ ! ":$(manpath):" == *":$destination_dir:"* ]]; then + # Ajouter le répertoire destination au PATH dans le fichier de configuration de session de l'utilisateur + echo 'export MANPATH="$(manpath):'"$destination_dir"'"' >> ~/.bashrc + source ~/.bashrc + log " _ $destination_dir a été ajouté au MANPATH dans le fichier de configuration de session de l'utilisateur." +fi + +log " _ Traitement des fichiers à copier dans $destination_dir" +# Copier sélectivement les fichiers du dépôt Git local +# Vérifier si le fichier "$file_local_desc" existe +if [ -e "$file_local_desc" ]; then + # Récupérer des fichiers installés + fileslist_local=$(cat "$file_local_desc") + + # Utilisez la commande rsync pour copier les fichiers + log " _ Copie des fichiers listés dans $file_local_desc" + rsync -av --files-from="$file_local_desc" "$source_dir/" "$destination_dir/" >> "$log_file" 2>&1 || error "Échec de copie" + +else + error "Le fichier '$file_local_desc' n'existe pas. Votre dépôt Git local n'est pas complet ou quelque chose s'est mal passé." +fi + + + + + +#### .local/bin #### + +## Declarations ## + +# Spécifier le chemin du répertoire ~/.local/bin +destination_dir="$HOME/.local/bin" + +# Spécifier le chemin du répertoire du dépôt Git local +source_dir="local/bin" + +file_local_desc=files_local-bin + +## Traitement ## + +log "Debut du Traitement pour $destination_dir" + +# S'assurer que le répertoire de destination existe, sinon, le créer +create_dir $destination_dir # Vérifier si le répertoire destination est déjà dans le PATH if [[ ! ":$PATH:" == *":$destination_dir:"* ]]; then @@ -48,22 +155,19 @@ if [[ ! ":$PATH:" == *":$destination_dir:"* ]]; then log " _ $destination_dir a été ajouté au PATH dans le fichier de configuration de session de l'utilisateur." fi -# S'assurer que le répertoire de destination existe, sinon, le créer -if [ ! -d "$destination_dir" ]; then - mkdir -p "$destination_dir" || error "Impossible de créer le répertoire $destination_dir" - log " _ Le répertoire $destination_dir a été créé." -fi - -log " _ Traitement des fichiers à copier dans ~/local/bin" +log " _ Traitement des fichiers à copier dans $destination_dir" # Copier sélectivement les fichiers du dépôt Git local vers ~/.local/bin en préservant la structure -# Vérifier si le fichier "files_local-bin" existe -if [ -e "files_local-bin" ]; then +# Vérifier si le fichier "$file_local_desc" existe +if [ -e "$file_local_desc" ]; then + # Récupérer des fichiers installés + fileslist_local=$(cat $file_local_desc) + # Utilisez la commande rsync pour copier les fichiers log " __ Copie des fichiers" - rsync -av --files-from=files_local-bin "$repository_dir/" "$destination_dir/" >> "$log_file" 2>&1 || error "Échec de la copie avec rsync" + rsync -av --files-from=$file_local_desc "$source_dir/" "$destination_dir/" >> "$log_file" 2>&1 || error "Échec de la copie avec rsync" # Renommez les fichiers en supprimant les extensions - for file in $files_local_bin; do + for file in $fileslist_local; do if [ -f "$destination_dir/$file" ]; then new_name="${file%.*}" # Supprimer l'extension mv -v "$destination_dir/$file" "$destination_dir/$new_name" || error "Impossible de renommer le fichier $file en $new_name" @@ -72,7 +176,7 @@ if [ -e "files_local-bin" ]; then done else - error "Le fichier 'files_local-bin' n'existe pas. Votre dépôt Git local n'est pas complet ou quelque chose s'est mal passé." + error "Le fichier '$file_local_desc' n'existe pas. Votre dépôt Git local n'est pas complet ou quelque chose s'est mal passé." fi # Affiche un message de confirmation diff --git a/local/share/doc/playlist_gen.1.md b/local/share/doc/playlist_gen.1.md new file mode 100644 index 0000000..754afc8 --- /dev/null +++ b/local/share/doc/playlist_gen.1.md @@ -0,0 +1,56 @@ +# playlist_gen(1) - Génère une playlist M3U à partir de fichiers audio + +## SYNOPSIS + +**playlist_gen** [-n \] [-d \] [-o \] + +## DESCRIPTION + +**playlist_gen** est un script Bash qui permet de générer une playlist M3U à partir de fichiers audio situés dans un répertoire spécifié. + +## OPTIONS + +- **-n \** : Spécifie le nombre de fichiers à inclure dans la playlist. Par défaut, le nombre de fichiers est 100. + +- **-d \** : Spécifie le répertoire à scanner pour les fichiers audio. Par défaut, le répertoire actuel est utilisé. + +- **-o \** : Spécifie le nom du fichier M3U de sortie. Par défaut, le fichier est créé dans le répertoire de la musique de l'utilisateur. + +## UTILISATION + +``` +playlist_gen -n 50 -d /chemin/vers/repertoire -o playlist.m3u +``` + +## COMPATIBILITÉ + +Ce script est compatible avec les fichiers audio aux formats MP3, Opus, Ogg et M4A. + +## EXEMPLES + +1. Générer une playlist M3U à partir du répertoire de musique par défaut de l'utilisateur : + + ``` + playlist_gen + ``` + +2. Générer une playlist M3U à partir d'un répertoire spécifique avec 25 fichiers audio : + + ``` + playlist_gen -n 25 -d /chemin/vers/repertoire + ``` + +## AUTEUR + +Ce script a été écrit par Cédric Abonnel. + +## RAPPORTS D'ERREURS + +Pour signaler des erreurs ou des problèmes, veuillez contacter a5l.scripts_bash@acemail.fr. + +## VOIR AUSSI + +- [man(1)](https://linux.die.net/man/1/man) +- [find(1)](https://linux.die.net/man/1/find) +- [stat(1)](https://linux.die.net/man/1/stat) + diff --git a/local/share/man/playlist_gen.1 b/local/share/man/playlist_gen.1 new file mode 100644 index 0000000..788b312 --- /dev/null +++ b/local/share/man/playlist_gen.1 @@ -0,0 +1,90 @@ +.\" Automatically generated by Pandoc 3.1.3 +.\" +.\" Define V font for inline verbatim, using C font in formats +.\" that render this, and otherwise B font. +.ie "\f[CB]x\f[]"x" \{\ +. ftr V B +. ftr VI BI +. ftr VB B +. ftr VBI BI +.\} +.el \{\ +. ftr V CR +. ftr VI CI +. ftr VB CB +. ftr VBI CBI +.\} +.TH "" "" "" "" "" +.hy +.SH playlist_gen(1) - Génère une playlist M3U à partir de fichiers audio +.SS SYNOPSIS +.PP +\f[B]playlist_gen\f[R] [-n ] [-d ] [-o +] +.SS DESCRIPTION +.PP +\f[B]playlist_gen\f[R] est un script Bash qui permet de générer une +playlist M3U à partir de fichiers audio situés dans un répertoire +spécifié. +.SS OPTIONS +.IP \[bu] 2 +\f[B]-n \f[R] : Spécifie le nombre de fichiers à +inclure dans la playlist. +Par défaut, le nombre de fichiers est 100. +.IP \[bu] 2 +\f[B]-d \f[R] : Spécifie le répertoire à scanner pour les +fichiers audio. +Par défaut, le répertoire actuel est utilisé. +.IP \[bu] 2 +\f[B]-o \f[R] : Spécifie le nom du fichier M3U de +sortie. +Par défaut, le fichier est créé dans le répertoire de la musique de +l\[cq]utilisateur. +.SS UTILISATION +.IP +.nf +\f[C] +playlist_gen -n 50 -d /chemin/vers/repertoire -o playlist.m3u +\f[R] +.fi +.SS COMPATIBILITÉ +.PP +Ce script est compatible avec les fichiers audio aux formats MP3, Opus, +Ogg et M4A. +.SS EXEMPLES +.IP "1." 3 +Générer une playlist M3U à partir du répertoire de musique par défaut de +l\[cq]utilisateur : +.RS 4 +.IP +.nf +\f[C] +playlist_gen +\f[R] +.fi +.RE +.IP "2." 3 +Générer une playlist M3U à partir d\[cq]un répertoire spécifique avec 25 +fichiers audio : +.RS 4 +.IP +.nf +\f[C] +playlist_gen -n 25 -d /chemin/vers/repertoire +\f[R] +.fi +.RE +.SS AUTEUR +.PP +Ce script a été écrit par Cédric Abonnel. +.SS RAPPORTS D\[cq]ERREURS +.PP +Pour signaler des erreurs ou des problèmes, veuillez contacter +a5l.scripts_bash\[at]acemail.fr. +.SS VOIR AUSSI +.IP \[bu] 2 +man(1) (https://linux.die.net/man/1/man) +.IP \[bu] 2 +find(1) (https://linux.die.net/man/1/find) +.IP \[bu] 2 +stat(1) (https://linux.die.net/man/1/stat) diff --git a/prep.sh b/prep.sh index e16b1ba..07ae967 100755 --- a/prep.sh +++ b/prep.sh @@ -1,4 +1,107 @@ #!/bin/bash -# Répertorier les fichiers + +# 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 >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 >files_local-share-doc + +log "Creer les pages MAN" + +file_local_desc=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 >files_local-share-man +