"""集中化 sys.path 引导模块

在首次导入时一次性设置好编译器运行所需的 sys.path：
- 项目根目录：让 ``import TransPyC``、``from StubGen import``、动态 importlib 能解析
- lib/includes：让用户注解模块中的 ``import t`` / ``import c`` 能解析

入口点（TransPyC.py / Projectrans.py）应在最开头 ``import lib._bootstrap``。
lib 内部模块也可 ``import lib._bootstrap`` 作为安全网，重复导入是无副作用的 no-op。
"""
from __future__ import annotations

import os
import sys

_BOOTSTRAPPED: bool = False


def _bootstrap() -> None:
    global _BOOTSTRAPPED
    if _BOOTSTRAPPED:
        return
    _BOOTSTRAPPED = True

    # lib/_bootstrap.py 所在目录
    _LibDir: str = os.path.dirname(os.path.abspath(__file__))
    # 项目根目录 = lib 的父目录
    _ProjectRoot: str = os.path.dirname(_LibDir)
    # lib/includes 目录（编译器内部类型系统 t.py / c.py）
    _IncludesDir: str = os.path.join(_LibDir, 'includes')

    if _ProjectRoot not in sys.path:
        sys.path.insert(0, _ProjectRoot)
    if _IncludesDir not in sys.path:
        sys.path.append(_IncludesDir)


_bootstrap()
