33800 Docs

← Retour
#!/bin/bash # =========================================== # Fonctions utilitaires partagées # =========================================== # Charger les autres libs si pas déjà fait SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" [ -z "$SCRIPTS_PATH" ] && source "$SCRIPT_DIR/config.sh" [ -z "$RED" ] && source "$SCRIPT_DIR/colors.sh" # Vérifier si une commande existe command_exists() { command -v "$1" >/dev/null 2>&1 } # Vérifier la connexion SSH vers Nginx check_nginx_ssh() { if ! ssh -o ConnectTimeout=5 -o BatchMode=yes "$NGINX_USER@$NGINX_HOST" "echo 'ok'" > /dev/null 2>&1; then log_error "Impossible de se connecter à $NGINX_HOST" return 1 fi return 0 } # Exécuter une commande sur le serveur Nginx nginx_exec() { ssh "$NGINX_USER@$NGINX_HOST" "$@" } # Exécuter une commande sudo sur Nginx nginx_sudo() { ssh "$NGINX_USER@$NGINX_HOST" "sudo $@" } # Tester une URL et retourner le code HTTP check_url() { local url="$1" local timeout="${2:-5}" curl -s -o /dev/null -w "%{http_code}" --connect-timeout "$timeout" "$url" 2>/dev/null || echo "ERR" } # Afficher le status d'une URL avec couleur print_url_status() { local url="$1" local code=$(check_url "$url") if [ "$code" = "200" ] || [ "$code" = "301" ] || [ "$code" = "302" ]; then echo -e " ${GREEN}✓${NC} $url ${DIM}[$code]${NC}" else echo -e " ${RED}✗${NC} $url ${DIM}[$code]${NC}" fi } # Parser les services d'un projet # Usage: parse_services "api:4510,public:4501" -> retourne array parse_services() { local services_str="$1" IFS=',' read -ra SERVICES <<< "$services_str" echo "${SERVICES[@]}" } # Obtenir le port d'un service # Usage: get_service_port "api:4510" -> 4510 get_service_port() { echo "$1" | cut -d':' -f2 } # Obtenir le nom d'un service # Usage: get_service_name "api:4510" -> api get_service_name() { echo "$1" | cut -d':' -f1 } # Vérifier si un container existe container_exists() { docker ps -a --format '{{.Names}}' | grep -q "^$1$" } # Vérifier si un container tourne container_running() { docker ps --format '{{.Names}}' | grep -q "^$1$" } # Générer le nom du container # Usage: container_name "hellocar" "api" "prod" -> hellocar-api-prod container_name() { echo "$1-$2-$3" } # Générer le domaine # Usage: domain_name "hellocar" "api" "prod" -> hellocar-api-prod.33800.nowhere84.com domain_name() { echo "$1-$2-$3.$DOMAIN_BASE" } # Confirmer une action confirm() { local message="${1:-Continuer ?}" read -p "$message [y/N] " -n 1 -r echo [[ $REPLY =~ ^[Yy]$ ]] } # Charger les secrets depuis le fichier env load_secrets() { local env="${1:-prod}" local secrets_file="$SECRETS_PATH/${env}.env" if [ -f "$secrets_file" ]; then set -a source "$secrets_file" set +a return 0 else log_error "Fichier secrets non trouvé: $secrets_file" return 1 fi } # Obtenir la date formatée get_date() { date '+%Y-%m-%d %H:%M:%S' } # Obtenir le timestamp get_timestamp() { date '+%Y%m%d%H%M%S' }