#!/bin/bash

# Скрипт для автоматизации релиза
# Использование: ./scripts/release.sh <version>
# Пример: ./scripts/release.sh 1.0.25

set -e  # Остановить выполнение при ошибке

# Проверка аргументов
if [ $# -eq 0 ]; then
    echo "Ошибка: Необходимо указать версию"
    echo "Использование: $0 <version>"
    echo "Пример: $0 1.0.25"
    exit 1
fi

VERSION=$1

# Проверка формата версии (простая проверка)
if [[ ! $VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
    echo "Ошибка: Неверный формат версии. Используйте формат X.Y.Z (например, 1.0.25)"
    exit 1
fi

echo "🚀 Начинаем релиз версии v$VERSION..."

# Проверяем, что мы в git репозитории
if ! git rev-parse --git-dir > /dev/null 2>&1; then
    echo "Ошибка: Не найден git репозиторий"
    exit 1
fi

# Проверяем, что нет незакоммиченных изменений
if ! git diff-index --quiet HEAD --; then
    echo "Ошибка: Есть незакоммиченные изменения. Сначала закоммитьте их."
    exit 1
fi

# Обновляем версию в main.go
echo "📝 Обновляем версию в main.go..."
if [[ "$OSTYPE" == "darwin"* ]]; then
    # macOS
    sed -i '' "s/const version = \"[^\"]*\"/const version = \"$VERSION\"/" main.go
else
    # Linux
    sed -i "s/const version = \"[^\"]*\"/const version = \"$VERSION\"/" main.go
fi

# Проверяем, что изменение применилось
if ! grep -q "const version = \"$VERSION\"" main.go; then
    echo "Ошибка: Не удалось обновить версию в main.go"
    exit 1
fi

echo "✅ Версия обновлена в main.go"

# Выполняем git команды
echo "📦 Добавляем изменения в git..."
git add .

echo "💾 Создаем коммит..."
git commit -m "Release v$VERSION"

echo "🏷️  Создаем тег..."
git tag -a "v$VERSION" -m "Release v$VERSION"

echo "🚀 Отправляем изменения и теги..."
git push
git push --tags

echo "🎉 Релиз v$VERSION успешно завершен!"
echo "📋 Выполненные действия:"
echo "   - Обновлена версия в main.go"
echo "   - Создан коммит с сообщением 'Release v$VERSION'"
echo "   - Создан тег v$VERSION"
echo "   - Изменения отправлены в удаленный репозиторий" 