# oceansguard/utils.py
from __future__ import annotations

import re


def timeout_for_check_command(cmd: str) -> int:
    """
    コマンド別タイムアウト（秒）。
    """
    c = (cmd or "").strip()

    if re.search(r"\bnpm\s+ci\b", c):
        return 900
    if re.search(r"\bnpm\s+install\b", c):
        return 900
    if re.search(r"\bnpm\s+run\s+build\b", c):
        return 900
    if re.search(r"\bnpm\s+run\s+lint\b", c):
        return 900
    if re.search(r"\bnpm\s+run\s+typecheck\b", c):
        return 900
    if re.search(r"\btsc\b", c):
        return 900

    if "compileall" in c:
        return 120
    if re.search(r"\bruff\b", c):
        return 180
    if re.search(r"\bmypy\b", c):
        return 300
    if re.search(r"\bpytest\b", c):
        return 600

    return 300


def should_stream_check_command(cmd: str) -> bool:
    """
    「止まって見える」系はストリーミング実行にする。
    """
    c = (cmd or "").strip()
    if re.search(r"\bnpm\s+ci\b", c):
        return True
    if re.search(r"\bnpm\s+install\b", c):
        return True
    if re.search(r"\bnpm\s+run\s+build\b", c):
        return True
    if re.search(r"\bnpm\s+run\s+lint\b", c):
        return True
    if re.search(r"\bnpm\s+run\s+typecheck\b", c):
        return True
    return False
