Files
quiz_test/scripts/dev.sh
Andrey K. Choi 1c47c11eb1
Some checks reported errors
continuous-integration/drone Build encountered an error
devops prepare
2025-09-11 07:40:57 +09:00

149 lines
3.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Скрипт для локальной разработки с Docker
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
echo "🐳 Quiz Bot Development Script"
echo "=============================="
# Функция для проверки Docker
check_docker() {
if ! command -v docker &> /dev/null; then
echo "❌ Docker не установлен!"
exit 1
fi
if ! docker info &> /dev/null; then
echo "❌ Docker daemon не запущен!"
exit 1
fi
echo "✅ Docker готов к работе"
}
# Функция для сборки образа
build_image() {
echo "🔨 Сборка Docker образа..."
cd "$PROJECT_ROOT"
docker build -t quiz-bot:dev .
echo "✅ Образ собран: quiz-bot:dev"
}
# Функция для запуска в development режиме
run_dev() {
echo "🚀 Запуск в режиме разработки..."
cd "$PROJECT_ROOT"
# Проверяем .env файл
if [ ! -f .env ]; then
echo "⚠️ Файл .env не найден. Создаём шаблон..."
cat > .env << EOF
BOT_TOKEN=your_bot_token_here
DATABASE_PATH=data/quiz_bot.db
CSV_DATA_PATH=data/
LOG_LEVEL=DEBUG
EOF
echo "📝 Заполните .env файл и запустите скрипт снова"
exit 1
fi
# Создаём директории если их нет
mkdir -p data logs
docker-compose up --build
}
# Функция для остановки
stop_dev() {
echo "🛑 Остановка сервисов..."
cd "$PROJECT_ROOT"
docker-compose down
echo "✅ Сервисы остановлены"
}
# Функция для очистки
cleanup() {
echo "🧹 Очистка Docker ресурсов..."
cd "$PROJECT_ROOT"
docker-compose down --volumes --remove-orphans
docker image rm quiz-bot:dev 2>/dev/null || true
docker system prune -f
echo "✅ Очистка завершена"
}
# Функция для тестирования
test_app() {
echo "🧪 Запуск тестов..."
cd "$PROJECT_ROOT"
# Сборка тестового образа
docker build -t quiz-bot:test .
# Запуск тестов в контейнере
docker run --rm \
-e BOT_TOKEN=test_token \
-e DATABASE_PATH=":memory:" \
quiz-bot:test \
python -m pytest test_*.py -v
echo "✅ Тесты завершены"
}
# Функция для логов
show_logs() {
echo "📋 Показ логов..."
cd "$PROJECT_ROOT"
docker-compose logs -f quiz-bot
}
# Главное меню
case "${1:-menu}" in
"build")
check_docker
build_image
;;
"run"|"start")
check_docker
run_dev
;;
"stop")
check_docker
stop_dev
;;
"restart")
check_docker
stop_dev
run_dev
;;
"test")
check_docker
test_app
;;
"logs")
check_docker
show_logs
;;
"cleanup")
check_docker
cleanup
;;
"menu"|*)
echo ""
echo "Использование: $0 [команда]"
echo ""
echo "Команды:"
echo " build - Собрать Docker образ"
echo " run - Запустить в режиме разработки"
echo " stop - Остановить сервисы"
echo " restart - Перезапустить сервисы"
echo " test - Запустить тесты"
echo " logs - Показать логи"
echo " cleanup - Очистить Docker ресурсы"
echo ""
;;
esac