#!/bin/bash

set -e

ARCHIVE_DIR="dev-init-archive"
ARCHIVE_NAME="dev-init-archive.zip"
DB_CONTAINER_NAME="db"
DUMP_FILE_PATH="$ARCHIVE_DIR/dump.sql"

# Fonction pour lire une variable précise dans le .env
get_env_var() {
  VAR_NAME=$1
  grep "^$VAR_NAME=" .env | cut -d '=' -f2- | tr -d '\r'
}

# Vérification présence .env
if [ ! -f ".env" ]; then
    echo "❌ Fichier .env introuvable !"
    exit 1
fi

# Extraction des variables DB
MYSQL_HOST=$(get_env_var "MYSQL_HOST")
MYSQL_USER=$(get_env_var "MYSQL_USER")
MYSQL_PWD=$(get_env_var "MYSQL_PWD")

if [ -z "$MYSQL_HOST" ] || [ -z "$MYSQL_USER" ] || [ -z "$MYSQL_PWD" ]; then
    echo "❌ Variables MYSQL_* manquantes dans le .env"
    exit 1
fi

# Nettoyage éventuel
rm -f "$ARCHIVE_NAME"
rm -rf "$ARCHIVE_DIR"
mkdir -p "$ARCHIVE_DIR"

# Export SQL
if [ "$1" == "--all-databases" ]; then
    echo "🛢️Export de toutes les bases..."
    docker compose exec $DB_CONTAINER_NAME mysqldump \
        --all-databases \
        --user="$MYSQL_USER" --password="$MYSQL_PWD" --host=127.0.0.1 --port=3306 \
        > "$DUMP_FILE_PATH"
else
    echo "🛢️Export de 4 bases spécifiques..."
    docker compose exec $DB_CONTAINER_NAME mysqldump \
        --databases licence_156 streamup_bd_test streamup_bd_modele media_manager \
        --user="$MYSQL_USER" --password="$MYSQL_PWD" --host=127.0.0.1 --port=3306 \
        > "$DUMP_FILE_PATH"
fi

echo "✅  Dump SQL généré."

# Copie .env
cp .env "$ARCHIVE_DIR/.env"
echo "✅  Copie du .env dans le dossier archive"

# Anonymisation manuelle des variables sensibles (détection par nom, remplacement par 'XXXXX')
echo "🔐 Anonymisation manuelle des variables sensibles..."

SENSITIVE_VARS=(
  STREAMZILLA_SUPERUSER_NAME
  STREAMZILLA_SUPERUSER_PWD
  TWITTER_SEARCH_CONSUMER_KEY
  TWITTER_SEARCH_CONSUMER_SECRET
  TWITTER_SEARCH_ACCESS_TOKEN
  TWITTER_SEARCH_ACCESS_TOKEN_SECRET
  DROPBOX_CHOOSER_APP_KEY
  GOOGLE_MAPS_DIRECTIONS_API_KEY
  GOOGLE_MAPS_DIRECTIONS_JAVASCRIPT_API_KEY
  YOUTUBE_DEVELOPER_KEY
  VIMEO_CLIENT_ID
  VIMEO_CLIENT_SECRET
  VIMEO_CURATION_SEARCH_KEY
  MAXMIND_GEOLOC_API_USER_ID
  MAXMIND_GEOLOC_API_LICENCE_KEY
  CFG_WOWZA_CLOUD_API_KEY
  CFG_WOWZA_CLOUD_ACCESS_KEY
  CFG_FACEBOOK_LOGIN_APP_ID
  CFG_FACEBOOK_LOGIN_APP_SECRET
)

for VAR in "${SENSITIVE_VARS[@]}"; do
  sed -i.bak -E "s/^([[:space:]]*#?[[:space:]]*$VAR[[:space:]]*=[[:space:]]*).*/\1XXXXX/" "$ARCHIVE_DIR/.env"
done

rm -f "$ARCHIVE_DIR/.env.bak"
echo "✅  Anonymisation terminée (variables actives et commentées)."

# Création de l'archive ZIP
echo "📦 Création de l'archive zip..."
cd "$ARCHIVE_DIR"
zip -r "../$ARCHIVE_NAME" .
cd ..

# Nettoyage temporaire
rm -rf "$ARCHIVE_DIR"

echo "✅  Archive $ARCHIVE_NAME prête."
