"""gvsdsdk CLI 入口

用法：
    python -m gvsdsdk                 # 默认：显示版本信息
    python -m gvsdsdk --version       # 仅版本字符串
    python -m gvsdsdk --info          # 详细版本信息
    python -m gvsdsdk --check 1.0.0   # 检查最低版本
    python -m gvsdsdk --symbols       # 列出所有公开符号
    python -m gvsdsdk --ping          # 测试 SDK 可用性
"""

import sys
import argparse

# 当作为 __main__ 运行时，需显式 import 包（runpy 不会自动注入）
import gvsdsdk
from gvsdsdk import __version__, get_version_info, check_min_version, _PKG_DIR, _LAZY_SYMBOLS


def main():
    parser = argparse.ArgumentParser(
        prog='gvsdsdk',
        description='GVS-DSDK — 分布式服务通信 SDK',
    )
    parser.add_argument('--version', action='store_true', help='显示版本号')
    parser.add_argument('--info', action='store_true', help='显示详细信息')
    parser.add_argument('--check', metavar='VERSION', help='检查最低版本要求')
    parser.add_argument('--symbols', action='store_true', help='列出所有公开符号')
    parser.add_argument('--ping', action='store_true', help='测试 SDK 可用性')
    args = parser.parse_args()

    if args.version:
        print(__version__)
        return 0

    if args.check:
        ok, msg = check_min_version(args.check)
        print(msg)
        return 0 if ok else 1

    if args.symbols:
        from gvsdsdk import _LAZY_SYMBOLS
        print(f'GVS-DSDK {__version__} — {len(_LAZY_SYMBOLS)} lazy symbols:')
        by_mod = {}
        for sym, (mod, _) in _LAZY_SYMBOLS.items():
            by_mod.setdefault(mod, []).append(sym)
        for mod, syms in sorted(by_mod.items()):
            print(f'  [{mod}]')
            for s in sorted(syms):
                print(f'    - {s}')
        return 0

    if args.ping:
        from gvsdsdk import get_version_info, _LAZY_SYMBOLS
        info = get_version_info()
        print(f'Pong — SDK {info["Version"]} ready at {info["Location"]}')
        print(f'  {len(_LAZY_SYMBOLS)} symbols available (lazy)')
        return 0

    if args.info:
        from gvsdsdk import get_version_info
        info = get_version_info()
        print('GVS-DSDK Version Information:')
        for k, v in info.items():
            print(f'  {k:12s} : {v}')
        return 0

    # 默认行为：简要版本信息
    print(f'GVS-DSDK {__version__}')
    print(f'  Location: {_PKG_DIR}')
    print(f'  Use --info for details, --help for all commands')
    return 0


if __name__ == '__main__':
    sys.exit(main())