188 lines
5.1 KiB
Bash
Executable File
188 lines
5.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script de synchronisation des configurations centralisées
|
|
# Usage: ./scripts/sync-configs.sh [project_name]
|
|
# Si aucun projet n'est spécifié, synchronise tous les projets
|
|
|
|
set -euo pipefail
|
|
|
|
# Couleurs pour les logs
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Fonction de logging
|
|
log() {
|
|
echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] ✓${NC} $1"
|
|
}
|
|
|
|
log_warning() {
|
|
echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] ⚠${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ✗${NC} $1"
|
|
}
|
|
|
|
# Répertoire racine du projet
|
|
PROJECT_ROOT="/home/debian/4NK_env/lecoffre_node"
|
|
CONF_DIR="$PROJECT_ROOT/conf"
|
|
|
|
# Vérifier que nous sommes dans le bon répertoire
|
|
if [[ ! -d "$CONF_DIR" ]]; then
|
|
log_error "Répertoire de configuration non trouvé: $CONF_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
# Fonction pour synchroniser un projet
|
|
sync_project() {
|
|
local project_name="$1"
|
|
local project_path="/home/debian/4NK_env/$project_name"
|
|
|
|
log "Synchronisation de $project_name..."
|
|
|
|
# Vérifier que le projet existe
|
|
if [[ ! -d "$project_path" ]]; then
|
|
log_warning "Projet $project_name non trouvé: $project_path"
|
|
return 1
|
|
fi
|
|
|
|
case "$project_name" in
|
|
"lecoffre_node")
|
|
# Bitcoin configuration
|
|
if [[ -f "$CONF_DIR/bitcoin/bitcoin.conf" ]]; then
|
|
cp "$CONF_DIR/bitcoin/bitcoin.conf" "$project_path/bitcoin/"
|
|
log_success "Bitcoin config copiée"
|
|
fi
|
|
|
|
# Relay configuration
|
|
if [[ -f "$CONF_DIR/relay/sdk_relay.conf" ]]; then
|
|
cp "$CONF_DIR/relay/sdk_relay.conf" "$project_path/relay/"
|
|
log_success "Relay config copiée"
|
|
fi
|
|
;;
|
|
|
|
"ihm_client")
|
|
# Nginx configuration
|
|
if [[ -f "$CONF_DIR/ihm_client/nginx.dev.conf" ]]; then
|
|
cp "$CONF_DIR/ihm_client/nginx.dev.conf" "$project_path/"
|
|
log_success "Nginx config copiée vers ihm_client"
|
|
fi
|
|
;;
|
|
|
|
"lecoffre-front")
|
|
# Frontend configuration (si nécessaire)
|
|
if [[ -d "$CONF_DIR/lecoffre-front" ]]; then
|
|
cp -r "$CONF_DIR/lecoffre-front/"* "$project_path/" 2>/dev/null || true
|
|
log_success "Frontend configs copiées"
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
log_warning "Projet $project_name non configuré pour la synchronisation"
|
|
return 1
|
|
;;
|
|
esac
|
|
|
|
log_success "Synchronisation de $project_name terminée"
|
|
}
|
|
|
|
# Fonction pour synchroniser tous les projets
|
|
sync_all() {
|
|
log "Synchronisation de tous les projets..."
|
|
|
|
local projects=("lecoffre_node" "ihm_client" "lecoffre-front")
|
|
local success_count=0
|
|
local total_count=${#projects[@]}
|
|
|
|
for project in "${projects[@]}"; do
|
|
if sync_project "$project"; then
|
|
((success_count++))
|
|
fi
|
|
done
|
|
|
|
log "Synchronisation terminée: $success_count/$total_count projets synchronisés"
|
|
|
|
if [[ $success_count -eq $total_count ]]; then
|
|
log_success "Tous les projets ont été synchronisés avec succès"
|
|
return 0
|
|
else
|
|
log_warning "Certains projets n'ont pas pu être synchronisés"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Fonction pour afficher l'aide
|
|
show_help() {
|
|
echo "Usage: $0 [OPTIONS] [PROJECT_NAME]"
|
|
echo ""
|
|
echo "Synchronise les configurations centralisées vers les projets"
|
|
echo ""
|
|
echo "OPTIONS:"
|
|
echo " -h, --help Affiche cette aide"
|
|
echo " -l, --list Liste les projets disponibles"
|
|
echo " -v, --verbose Mode verbeux"
|
|
echo ""
|
|
echo "PROJECT_NAME:"
|
|
echo " Nom du projet à synchroniser (optionnel)"
|
|
echo " Si non spécifié, synchronise tous les projets"
|
|
echo ""
|
|
echo "Exemples:"
|
|
echo " $0 # Synchronise tous les projets"
|
|
echo " $0 ihm_client # Synchronise seulement ihm_client"
|
|
echo " $0 lecoffre_node # Synchronise seulement lecoffre_node"
|
|
}
|
|
|
|
# Fonction pour lister les projets
|
|
list_projects() {
|
|
echo "Projets disponibles pour la synchronisation:"
|
|
echo " - lecoffre_node (bitcoin.conf, sdk_relay.conf)"
|
|
echo " - ihm_client (nginx.dev.conf)"
|
|
echo " - lecoffre-front (configurations frontend)"
|
|
}
|
|
|
|
# Parse des arguments
|
|
VERBOSE=false
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
-h|--help)
|
|
show_help
|
|
exit 0
|
|
;;
|
|
-l|--list)
|
|
list_projects
|
|
exit 0
|
|
;;
|
|
-v|--verbose)
|
|
VERBOSE=true
|
|
shift
|
|
;;
|
|
-*)
|
|
log_error "Option inconnue: $1"
|
|
show_help
|
|
exit 1
|
|
;;
|
|
*)
|
|
PROJECT_NAME="$1"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Changer vers le répertoire du projet
|
|
cd "$PROJECT_ROOT"
|
|
|
|
# Exécuter la synchronisation
|
|
if [[ -n "${PROJECT_NAME:-}" ]]; then
|
|
log "Synchronisation du projet: $PROJECT_NAME"
|
|
sync_project "$PROJECT_NAME"
|
|
else
|
|
sync_all
|
|
fi
|