#!/bin/bash

# Скрипт для отладки LineDB

echo "LineDB Debug Script"
echo "==================="
echo ""

# Проверяем, установлен ли Delve
if ! command -v dlv &> /dev/null; then
    echo "Delve не установлен. Устанавливаем..."
    go install github.com/go-delve/delve/cmd/dlv@latest
fi

# Функция для отладки простого теста
debug_simple() {
    echo "Запуск отладки простого теста..."
    dlv debug debug_app.go
}

# Функция для отладки основного теста
debug_main() {
    echo "Запуск отладки основного теста..."
    dlv debug debug_main.go
}

# Функция для отладки тестов
debug_tests() {
    echo "Запуск отладки тестов..."
    dlv test ./tests/... -- -v
}

# Функция для отладки примера
debug_example() {
    echo "Запуск отладки примера..."
    dlv debug examples/basic/main.go
}

# Функция для отладки с аргументами
debug_with_args() {
    echo "Запуск отладки с аргументами..."
    dlv debug simple.go -- --arg1 --arg2
}

# Функция для отладки с переменными окружения
debug_with_env() {
    echo "Запуск отладки с переменными окружения..."
    DEBUG=true dlv debug simple.go
}

# Главное меню
case "$1" in
    "simple")
        debug_simple
        ;;
    "main")
        debug_main
        ;;
    "tests")
        debug_tests
        ;;
    "example")
        debug_example
        ;;
    "args")
        debug_with_args
        ;;
    "env")
        debug_with_env
        ;;
    *)
        echo "Использование: $0 {simple|main|tests|example|args|env}"
        echo ""
        echo "Опции:"
        echo "  simple  - Отладка простого теста (debug_app.go)"
        echo "  main    - Отладка основного теста (debug_main.go)"
        echo "  tests   - Отладка тестов"
        echo "  example - Отладка примера"
        echo "  args    - Отладка с аргументами"
        echo "  env     - Отладка с переменными окружения"
        echo ""
        echo "Примеры команд Delve:"
        echo "  break main.main          - Установить точку останова в main"
        echo "  break pkg/linedb/line_db.go:30 - Установить точку останова на строке 30"
        echo "  continue                 - Продолжить выполнение"
        echo "  next                     - Следующая строка"
        echo "  step                     - Войти в функцию"
        echo "  print variable           - Вывести значение переменной"
        echo "  vars                     - Показать все переменные"
        echo "  goroutines               - Показать горутины"
        echo "  stack                    - Показать стек вызовов"
        ;;
esac
