#!/bin/bash

# Définit le chemin racine du projet de manière dynamique
# Utilise le chemin du script actuel pour remonter jusqu'à la racine
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"

# === Affiche l'aide détaillée ===
# Fonction qui affiche le menu d'aide avec toutes les commandes disponibles
show_help() {
  echo
  echo "🛠️  Utilisation : ./caddy.sh [commande] [theme (si requis)]"
  echo
  echo "📖 Commandes disponibles :"
  echo
  echo "  status"
  echo "    → Affiche l'état de WordPress (installé ou non), le thème actif,"
  echo "      et la présence de chaque thème défini dans la config."
  echo
  echo "  wp-install"
  echo "    → Lance une installation complète de WordPress via WP-CLI."
  echo "      Utilise les variables définies dans le .env (URL, titre, user, etc.)."
  echo
  echo "  wp-uninstall"
  echo "    → Supprime complètement l'installation WordPress (base de données incluse)."
  echo "      ⚠️ Destructive, à utiliser uniquement en local ou en dev."
  echo
  echo "  wp-update"
  echo "    → Met à jour WordPress core, les plugins, les thèmes et les traductions via WP-CLI."
  echo
  echo "  symlink [theme]"
  echo "    → Installe le thème en mode développement via symlink local."
  echo "      Utilise le chemin défini dans la config. Nécessite que le thème soit présent en local."
  echo
  echo "  git [theme]"
  echo "    → Installe le thème depuis un dépôt Git distant (défini dans la config)."
  echo "      Le thème est ajouté à Composer en tant que dépendance VCS."
  echo
  echo "  remove [theme]"
  echo "    → Supprime un thème du dossier themes (dev ou prod)."
  echo "      Supprime aussi la référence Composer si elle existe."
  echo
  echo "  server-ready"
  echo "    → Prépare le thème pour la production."
  echo "      Fusionne les dépendances, repositories et autoload psr-4 du thème vers composer.json racine."
  echo "      Supprime les entrées indésirables."
  echo
  echo "  composer-setup"
  echo "    → Installe Composer sur le serveur (ovh)."
  echo
  echo "  composer-selfupdate"
  echo "    → Met à jour Composer sur le serveur (ovh)."
  echo
  echo "💼 Thèmes disponibles :"
  for key in "${!THEMES[@]}"; do
    echo "  - $key (${THEMES[$key]})"
  done
  echo
}

# === Charge la config des thèmes si dispo ===
# Fonction qui charge le fichier de configuration des thèmes
source_config() {
  CONFIG_FILE="$PROJECT_ROOT/config/richkit/themes.conf"
  echo "CONFIG_FILE: $CONFIG_FILE"
  if [ -f "$CONFIG_FILE" ]; then
    source "$CONFIG_FILE"
  else
    echo "❌ Fichier de config '$CONFIG_FILE' introuvable."
    exit 1
  fi
}

# === Affiche tous les thèmes disponibles depuis la config ===
# Fonction qui liste tous les thèmes configurés avec leurs noms d'affichage
show_themes() {
  echo
  echo "💼 Thèmes disponibles :"
  for key in "${!THEMES[@]}"; do
    echo "  - $key (${THEMES[$key]})"
  done
  echo
}

# === Vérifie qu'un .env existe ===
# Fonction qui vérifie la présence du fichier .env nécessaire pour la configuration
check_env_file() {
  if [ ! -f ".env" ]; then
    echo "❌ Aucun fichier .env trouvé. Merci de créer un .env (copie de .env.example par exemple)."
    exit 1
  fi
}

# === Charge les variables d'environnement ===
# Fonction qui charge les variables depuis le fichier .env
# Exclut les lignes commentées (commençant par #)
load_env() {
  export $(grep -v '^#' .env | xargs)
}

# === Demande confirmation à l'utilisateur ===
# Fonction qui demande une confirmation avant d'exécuter une action potentiellement dangereuse
# Paramètre : message à afficher
# Retourne 0 si l'utilisateur confirme (y/Y), 1 sinon
ask_confirm() {
  local message="$1"
  echo
  echo "⚠️  $message Continuer ? [y/N]"
  read confirm
  if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
    echo "❌ Annulé."
    exit 0
  fi
}
