# Copyright (C) 2020-2026 by Haim Bar and HaiYing Wang
# Part of the runcode package 2026/06/13 v2.6
# https://github.com/Ossifragus/runcode
#
# This file may be distributed and/or modified under the conditions of
# the LaTeX Project Public License, either version 1.3c of this license
# or (at your option) any later version.
# The latest version of this license is in http://www.latex-project.org/lppl.txt

"""Wait until a talk2stat server is ready to accept connections.

Usage: python3 wait_for_server.py [LANG [DIR [TIMEOUT]]]
  LANG     language server to wait for: R, python, julia, matlab (default: R)
  DIR      working directory of the server (default: ./)
  TIMEOUT  seconds to wait before giving up (default: 120)
"""
import sys
import time
from talk2stat.talk2stat import client

lang    = sys.argv[1] if len(sys.argv) > 1 else 'R'
workdir = sys.argv[2] if len(sys.argv) > 2 else './'
timeout = int(sys.argv[3]) if len(sys.argv) > 3 else 120

for _ in range(timeout):
    if client(workdir, lang, '``` ```'):
        print(f'{lang} server ready')
        sys.exit(0)
    time.sleep(1)

sys.exit(f'ERROR: {lang} server did not become ready within {timeout} seconds')
