scripts-bash/install.sh

209 lines
6.3 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
}
add_uninstall() {
## Create or update uninstall script
uninstall_list=$HOME/.config/a5l_scripts-bash_uninstall-list
test -f "${uninstall_list}" || touch "${uninstall_list}"
local fichier_a_supprimer="$1"
# Vérifier si le fichier de suppression existe déjà dans uninstall_script
if ! grep -q "$fichier_a_supprimer" "$uninstall_list"; then
# Ajouter le fichier à uninstall_list
echo "$fichier_a_supprimer" >> "$uninstall_list"
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 listés dans $file_local_desc"
# Copier les fichiers en supprimant les extensions
for file in $fileslist_local; do
cp -v "$source_dir/$file" "$destination_dir/" || error "Impossible de copier $source_dir/$file vers $destination_dir/"
add_uninstall "$destination_dir/$file"
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
#### .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"
# Copier les fichiers en supprimant les extensions
for file in $fileslist_local; do
cp -v "$source_dir/$file" "$destination_dir/" || error "Impossible de fichier $source_dir/$file vers $destination_dir/"
add_uninstall "$destination_dir/$file"
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
#### .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"
# Copier les fichiers en supprimant les extensions
for file in $fileslist_local; do
new_name="${file%.*}" # Supprimer l'extension
cp -v "$source_dir/$file" "$destination_dir/$new_name" || error "Impossible de fichier $source_dir/$file vers $destination_dir/$new_nam"
add_uninstall "$destination_dir/$new_name"
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."