84 lines
3.0 KiB
Python
84 lines
3.0 KiB
Python
import subprocess
|
|
import argparse
|
|
import sys
|
|
import signal
|
|
|
|
# Параметры для процессов
|
|
server_process = None
|
|
test_server_process = None
|
|
|
|
|
|
def usage():
|
|
"""Функция для отображения помощи"""
|
|
print("Usage: run_all.py [--test]")
|
|
sys.exit(1)
|
|
|
|
|
|
# Обработчик для сигналов выхода
|
|
def cleanup():
|
|
"""Функция для остановки серверов при выходе"""
|
|
print("Остановка серверов...")
|
|
if server_process:
|
|
server_process.terminate()
|
|
server_process.wait()
|
|
if test_server_process:
|
|
test_server_process.terminate()
|
|
test_server_process.wait()
|
|
print("Серверы остановлены.")
|
|
|
|
|
|
# Назначаем функции очистки для сигналов
|
|
signal.signal(signal.SIGINT, lambda *_: cleanup())
|
|
signal.signal(signal.SIGTERM, lambda *_: cleanup())
|
|
|
|
# Парсер аргументов командной строки
|
|
parser = argparse.ArgumentParser(description="Python launcher script.")
|
|
parser.add_argument("--test-socket", action="store_true", help="Запуск в режиме тестирования")
|
|
parser.add_argument("--bullet-gui", action="store_true", help="Вывод визуального pybullet")
|
|
args = parser.parse_args()
|
|
|
|
# Установка команды для pybullet_server
|
|
pybullet_command = [
|
|
"poetry",
|
|
"run",
|
|
"python",
|
|
"utils/pybullet_server.py",
|
|
"--test",
|
|
] # Путь к исполняемому файлу
|
|
|
|
# Если включен режим тестирования, добавляем флаг --test
|
|
if args.bullet_gui:
|
|
pybullet_command.append("--test")
|
|
|
|
# Запуск pybullet_server.exe
|
|
print("Запуск pybullet_server...")
|
|
server_process = subprocess.Popen(pybullet_command)
|
|
|
|
# Проверяем успешный запуск сервера
|
|
if server_process.poll() is not None:
|
|
print("Ошибка при запуске pybullet_server")
|
|
sys.exit(1)
|
|
|
|
# Если включен режим тестирования, запускаем test_socket_server.exe
|
|
if args.test_socket:
|
|
print("Запуск test_socket_server...")
|
|
test_server_process = subprocess.Popen(
|
|
["poetry", "run", "python", "utils/test_socket_server.py"]
|
|
) # Путь к исполняемому файлу
|
|
|
|
# Проверка успешного запуска тестового сервера
|
|
if test_server_process.poll() is not None:
|
|
print("Ошибка при запуске test_socket_server")
|
|
sys.exit(1)
|
|
|
|
# Запуск основного скрипта main.exe в режиме тестирования
|
|
subprocess.run(
|
|
["poetry", "run", "python", "main.py", "--mode", "test"]
|
|
) # Путь к исполняемому файлу
|
|
else:
|
|
# Запуск основного скрипта main.exe
|
|
subprocess.run(["poetry", "run", "python", "main.py"]) # Путь к исполняемому файлу
|
|
|
|
# Очистка после завершения
|
|
cleanup()
|