#!/bin/bash # Функция для отображения помощи usage() { echo "Usage: $0 [--test]" exit 1 } # Разбираем аргументы командной строки TEST_MODE=0 while [[ "$1" != "" ]]; do case $1 in --test ) TEST_MODE=1 ;; * ) usage exit 1 esac shift done # Функция для очистки запущенных процессов при завершении cleanup() { echo "Остановка серверов..." if [[ -n "$SERVER_PID" ]]; then kill $SERVER_PID wait $SERVER_PID 2>/dev/null fi if [[ -n "$TEST_SERVER_PID" ]]; then kill $TEST_SERVER_PID wait $TEST_SERVER_PID 2>/dev/null fi echo "Серверы остановлены." } # Устанавливаем ловушку для сигналов выхода trap cleanup EXIT # Устанавливаем команду запуска для pybullet_server PYBULLET_COMMAND="poetry run python utils/pybullet_server.py" # Добавляем флаг --test, если включен режим тестирования if [ $TEST_MODE -eq 1 ]; then PYBULLET_COMMAND+=" --test" fi # Запуск сервера в фоновом режиме с учетом флага --test $PYBULLET_COMMAND & SERVER_PID=$! # Проверяем, был ли сервер запущен успешно if ! kill -0 $SERVER_PID 2>/dev/null; then echo "Ошибка при запуске pybullet_server" exit 1 fi # Запуск тестового серверного скрипта, если требуется режим тестирования if [ $TEST_MODE -eq 1 ]; then poetry run python utils/test_socket_server.py & TEST_SERVER_PID=$! # Проверяем, был ли тестовый сервер запущен успешно if ! kill -0 $TEST_SERVER_PID 2>/dev/null; then echo "Ошибка при запуске test_socket_server" exit 1 fi poetry run python main.py --mode test else poetry run python main.py fi