scripts-bash/install.sh

80 lines
2.8 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 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}/copy_files_$(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"
}
## 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éé."
fi
## Traitement de .local/bin
# Récupérer des fichiers installés
./prep.sh
files_local_bin=$(cat files_local-bin)
# 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
# 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"
# 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
# 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"
# Renommez les fichiers en supprimant les extensions
for file in $files_local_bin; 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 'files_local-bin' 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."