scripts-bash/install.sh

183 lines
5.7 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 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"
# 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 "Debut du script"
## Post traitement : log
# S'assurer que le répertoire de destination existe, sinon, le créer
create_dir ${log_dir}
log "Rafraichissement des listes de fichiers"
#### .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
#### .local/share/man ####
## Declarations ##
# Spécifier le chemin du répertoire ~/.local/bin
destination_dir="$HOME/.local/share/man/man1"
# 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
# Ajouter le répertoire destination au PATH dans le fichier de configuration de session de l'utilisateur
echo 'export PATH="$PATH:'"$destination_dir"'"' >> ~/.bashrc
source ~/.bashrc
log " _ $destination_dir a été ajouté au PATH 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 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"
# Renommez les fichiers en supprimant les extensions
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"
log " __ Renommer $file -> $new_name."
fi
done
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
# Affiche un message de confirmation
log "Les fichiers du dépôt Git local ont été copiés vers $destination_dir avec succès."