
#!/bin/bash

# Скрипт для быстрого развертывания Global-IT24 на Ubuntu с внешним Traefik
# Использование:
#   ./deploy.sh          - полная сборка без кеша (медленно, 15-30 минут)
#   ./deploy.sh --fast   - быстрая сборка с кешем (5-10 минут)

set -e

FAST_BUILD=false

# Парсинг аргументов
while [[ $# -gt 0 ]]; do
    case $1 in
        --fast)
            FAST_BUILD=true
            shift
            ;;
        --help|-h)
            echo "Использование: $0 [--fast] [--help]"
            echo ""
            echo "Опции:"
            echo "  --fast    Быстрая сборка с использованием кеша"
            echo "  --help    Показать эту справку"
            echo ""
            echo "Примеры:"
            echo "  $0                # Полная сборка без кеша"
            echo "  $0 --fast         # Быстрая сборка с кешем"
            echo ""
            echo "Рекомендация: используйте --fast для обновлений и пересборок"
            exit 0
            ;;
        *)
            echo "❌ Неизвестный параметр: $1"
            echo "Используйте --help для справки"
            exit 1
            ;;
    esac
done

echo "🚀 Развертывание Global-IT24..."

# Проверка наличия .env файла
if [ ! -f .env ]; then
    echo "⚠️  Файл .env не найден. Создаю из .env.example..."
    cp .env.example .env
    echo "📝 Отредактируйте файл .env (укажите APP_HOST_IP) и запустите скрипт снова."
    exit 1
fi

# Загрузка переменных окружения
source .env

# Проверка APP_HOST_IP
if [ -z "$APP_HOST_IP" ] || [ "$APP_HOST_IP" = "192.168.50.X" ]; then
    echo "⚠️  Пожалуйста, укажите APP_HOST_IP в файле .env"
    echo "📝 Текущий IP адрес сервера:"
    hostname -I
    exit 1
fi

# Остановка предыдущей версии
echo "🛑 Остановка предыдущей версии..."
docker compose down 2>/dev/null || true

# Сборка нового образа
if [ "$FAST_BUILD" = true ]; then
    echo "⚡ Быстрая сборка с использованием кеша (5-10 минут)..."
    export DOCKER_BUILDKIT=1
    export COMPOSE_DOCKER_CLI_BUILD=1
    docker compose build
else
    echo "🔨 Полная сборка Docker образа без кеша (15-30 минут)..."
    echo "💡 Подсказка: используйте --fast для ускорения следующих сборок"
    docker compose build --no-cache
fi

# Запуск контейнера
echo "▶️  Запуск контейнера..."
docker compose up -d

# Ожидание готовности
echo "⏳ Ожидание готовности сервиса..."
sleep 10

# Проверка статуса
if docker compose ps | grep -q "Up"; then
    echo "✅ Развертывание успешно завершено!"
    echo ""
    echo "📊 Статус контейнера:"
    docker compose ps
    echo ""
    echo "🌐 Сайт будет доступен по адресу: ${NEXT_PUBLIC_SITE_URL}"
    echo "   после настройки Traefik на хосте ${TRAEFIK_HOST}"
    echo ""
    echo "🔧 Настройте Traefik (см. traefik-config-example.yml):"
    echo "   - IP приложения: ${APP_HOST_IP}:3000"
    echo "   - Домен: ${DOMAIN}"
    echo ""
    echo "📝 Для просмотра логов используйте: ./logs.sh"
    echo "🧪 Локальная проверка: curl http://localhost:3000"
else
    echo "❌ Ошибка при запуске контейнера!"
    echo "📝 Логи:"
    docker compose logs
    exit 1
fi
