#!/bin/bash
# create-wp-zip - Script global pour créer des archives WordPress optimisées
# Usage: create-wp-zip [nom-du-theme] [nom-archive-optionnel]
# Auteur: GitHub Copilot pour Constatimmo

set -e

# Configuration
THEME_NAME="${1:-}"
CUSTOM_NAME="${2:-}"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)

# Fonction d'aide
show_help() {
    echo "🎯 create-wp-zip - Archive WordPress optimisée"
    echo ""
    echo "Usage:"
    echo "  create-wp-zip                          # Archive complète wp-content"
    echo "  create-wp-zip constatimmo             # Focus sur le thème 'constatimmo'"
    echo "  create-wp-zip mytheme staging         # Nom personnalisé 'staging'"
    echo ""
    echo "Fonctionnalités:"
    echo "  ✅ Exclut node_modules et vendor des thèmes uniquement"
    echo "  ✅ Préserve les dependencies des plugins"
    echo "  ✅ Détection automatique du dossier WordPress"
    echo "  ✅ Archive optimisée et nommée intelligemment"
    echo ""
    echo "Options:"
    echo "  -h, --help     Affiche cette aide"
    echo ""
}

# Gestion des arguments
case "${1:-}" in
    -h|--help)
        show_help
        exit 0
        ;;
esac

echo "🎯 create-wp-zip - Archive WordPress Optimisée"
echo "=============================================="

# Détection du dossier WordPress
WP_ROOT=""
if [ -f "wp-config.php" ]; then
    WP_ROOT="$(pwd)"
    echo "📁 WordPress détecté: $(basename "$WP_ROOT")"
elif [ -d "wp-content" ]; then
    WP_ROOT="$(pwd)"
    echo "📁 Dossier wp-content détecté: $(basename "$WP_ROOT")"
elif [ -d "wp" ] && [ -f "wp/wp-config.php" ]; then
    WP_ROOT="$(pwd)/wp"
    echo "📁 WordPress détecté (sous-dossier wp/): $(basename "$(pwd)")"
    cd "$WP_ROOT"
elif [ -f "../wp-config.php" ]; then
    WP_ROOT="$(cd .. && pwd)"
    echo "📁 WordPress détecté (parent): $(basename "$WP_ROOT")"
    cd "$WP_ROOT"
elif [ -f "../../wp-config.php" ]; then
    WP_ROOT="$(cd ../.. && pwd)"
    echo "📁 WordPress détecté (grand-parent): $(basename "$WP_ROOT")"
    cd "$WP_ROOT"
else
    echo "❌ Erreur: Pas de WordPress détecté dans ce dossier ou ses parents"
    echo "   Cherché: wp-config.php, wp-content/, wp/wp-config.php"
    echo "   PWD: $(pwd)"
    exit 1
fi

# Vérification wp-content
if [ ! -d "wp-content" ]; then
    echo "❌ Erreur: wp-content/ introuvable dans $WP_ROOT"
    exit 1
fi

# Génération du nom d'archive
ORIGINAL_DIR="$(pwd)"
if [ -n "$CUSTOM_NAME" ]; then
    ARCHIVE_NAME="${CUSTOM_NAME}-${TIMESTAMP}.zip"
elif [ -n "$THEME_NAME" ]; then
    ARCHIVE_NAME="wp-content-${THEME_NAME}-${TIMESTAMP}.zip"
else
    ARCHIVE_NAME="wp-content-$(basename "$WP_ROOT")-${TIMESTAMP}.zip"
fi

# Retourner au dossier original pour créer l'archive
cd "$ORIGINAL_DIR"
FULL_ARCHIVE_PATH="$ORIGINAL_DIR/$ARCHIVE_NAME"

echo "📦 Archive: $ARCHIVE_NAME"

# Information sur le thème ciblé
if [ -n "$THEME_NAME" ]; then
    if [ -d "$WP_ROOT/wp-content/themes/$THEME_NAME" ]; then
        echo "🎨 Thème ciblé: $THEME_NAME"
        THEME_SIZE=$(du -sh "$WP_ROOT/wp-content/themes/$THEME_NAME" 2>/dev/null | cut -f1)
        echo "   Taille: $THEME_SIZE"
    else
        echo "⚠️  Thème '$THEME_NAME' non trouvé, archive complète créée"
    fi
fi

# Calcul taille avant compression
TOTAL_SIZE=$(du -sh "$WP_ROOT/wp-content" 2>/dev/null | cut -f1)
echo "📊 Taille wp-content: $TOTAL_SIZE"

echo ""
echo "🔄 Création archive optimisée..."

# Création de l'archive avec exclusions optimisées
cd "$WP_ROOT"
zip -r "$FULL_ARCHIVE_PATH" wp-content \
  -x "wp-content/themes/*/node_modules/*" \
  -x "wp-content/themes/*/vendor/*" \
  -x "wp-content/cache/*" \
  -x "wp-content/debug.log" \
  -x "wp-content/upgrade/*" \
  -x "wp-content/upgrade-temp-backup/*" \
  -x "wp-content/*/.DS_Store" \
  -x "wp-content/*/*/.DS_Store" \
  -x "wp-content/*/*/*/.DS_Store" \
  -x "wp-content/themes/*/.env*" \
  -x "wp-content/themes/*/.gitignore" \
  -x "wp-content/themes/*/package-lock.json" \
  -x "wp-content/themes/*/composer.lock" \
  -x "wp-content/themes/*/README.md" \
  -x "wp-content/themes/*/LICENSE.md" \
  -x "wp-content/themes/*/vite.config.js" \
  -x "wp-content/themes/*/webpack.config.js" \
  -x "wp-content/themes/*/gulpfile.js" \
  -x "wp-content/themes/*/.babelrc*" \
  -x "wp-content/themes/*/.postcssrc*" \
  -q

# Vérifications finales
cd "$ORIGINAL_DIR"
if [ -f "$ARCHIVE_NAME" ]; then
    ARCHIVE_SIZE=$(du -sh "$ARCHIVE_NAME" | cut -f1)
    ARCHIVE_FILES=$(unzip -l "$ARCHIVE_NAME" 2>/dev/null | tail -1 | awk '{print $2}' || echo "?")

    echo ""
    echo "✅ Archive créée avec succès!"
    echo "📦 Fichier: $ARCHIVE_NAME"
    echo "📏 Taille: $ARCHIVE_SIZE"
    echo "📄 Fichiers: $ARCHIVE_FILES"
    echo ""
    echo "📋 Exclusions appliquées:"
    echo "   ❌ node_modules des thèmes"
    echo "   ❌ vendor des thèmes"
    echo "   ❌ Fichiers de développement (.env, package-lock.json, etc.)"
    echo "   ❌ Cache et logs WordPress"
    echo "   ✅ Plugins préservés intégralement"
    echo ""
    echo "🚀 Prêt pour le déploiement!"

    # Suggestion de commandes utiles
    echo ""
    echo "💡 Commandes utiles:"
    echo "   unzip -l $ARCHIVE_NAME | head -20    # Lister le contenu"
    echo "   rsync -avz $ARCHIVE_NAME user@server:/path/    # Upload"
    echo "   scp $ARCHIVE_NAME user@server:/path/    # Upload SSH"
else
    echo "❌ Erreur: Échec de création de l'archive"
    exit 1
fi
