| from __future__ import annotations | |
| import argparse | |
| import os | |
| import sys | |
| import time | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).resolve().parents[1])) | |
| def main() -> None: | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--seconds", type=int, default=90) | |
| parser.add_argument("--port", type=int, default=7860) | |
| parser.add_argument("--backend", default="mock") | |
| args = parser.parse_args() | |
| os.environ["MODEL_BACKEND"] = args.backend | |
| from tower_game.ui import build_app | |
| app = build_app() | |
| try: | |
| app.launch( | |
| server_name="127.0.0.1", | |
| server_port=args.port, | |
| prevent_thread_lock=True, | |
| show_error=True, | |
| ) | |
| time.sleep(max(1, min(args.seconds, 300))) | |
| finally: | |
| app.close() | |
| if __name__ == "__main__": | |
| main() | |