#!/usr/bin/env bash
set -e

USERS_FILE="config/users"
ADMIN_USER="admin"

echo "🔐 Creando usuario administrador para Radicale..."

# Verificar que htpasswd esté disponible
if ! command -v htpasswd >/dev/null 2>&1; then
    echo "❌ htpasswd no encontrado. Instalando apache2-utils..."
    if command -v apt >/dev/null 2>&1; then
        sudo apt update && sudo apt install -y apache2-utils
    elif command -v yum >/dev/null 2>&1; then
        sudo yum install -y httpd-tools
    elif command -v pacman >/dev/null 2>&1; then
        sudo pacman -S apache-tools
    else
        echo "❌ No se pudo instalar htpasswd automáticamente"
        echo "💡 Instala manualmente: apache2-utils (Ubuntu/Debian) o httpd-tools (RHEL/CentOS)"
        exit 1
    fi
fi

# Crear directorio config si no existe
mkdir -p config

# Verificar si ya existe el usuario admin
if [ -f "$USERS_FILE" ] && grep -q "^$ADMIN_USER:" "$USERS_FILE"; then
    echo "⚠️  El usuario '$ADMIN_USER' ya existe."
    read -rp "¿Deseas cambiar su contraseña? (s/n): " change_password
    if [[ "$change_password" =~ ^[sS]$ ]]; then
        echo "🔄 Cambiando contraseña para '$ADMIN_USER'..."
        htpasswd -B "$USERS_FILE" "$ADMIN_USER"
    else
        echo "🚫 Operación cancelada."
        exit 0
    fi
else
    # Crear archivo de usuarios si no existe
    if [ ! -f "$USERS_FILE" ]; then
        touch "$USERS_FILE"
        echo "📁 Archivo de usuarios creado: $USERS_FILE"
    fi

    echo "➕ Creando usuario '$ADMIN_USER'..."
    htpasswd -B "$USERS_FILE" "$ADMIN_USER"
fi

echo ""
echo "✅ Usuario administrador configurado correctamente"
echo "📝 Usuario: $ADMIN_USER"
echo "📂 Archivo: $USERS_FILE"
echo ""

# Reiniciar Radicale si está corriendo
if docker ps --format 'table {{.Names}}' | grep -q radicale; then
    echo "🔄 Reiniciando contenedor Radicale..."
    docker compose restart radicale >/dev/null 2>&1
    echo "✅ Radicale reiniciado"
else
    echo "ℹ️  Para aplicar los cambios, ejecuta: docker compose up -d"
fi

echo ""
echo "🎉 ¡Listo! Puedes usar '$ADMIN_USER' para acceder a Radicale"