71 lines
2.1 KiB
Bash
Executable File
71 lines
2.1 KiB
Bash
Executable File
#!/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
|