import argparse
import logging

import cpu_binder

LOG_MAP = {0: logging.DEBUG, 1: logging.INFO, 2: logging.WARNING, 3: logging.ERROR}


def main():
    parser = argparse.ArgumentParser(description="总入口:支持多个子命令")
    subparsers = parser.add_subparsers(dest="command", required=True)

    bind_parser = subparsers.add_parser("bind", help="执行绑核逻辑")
    bind_parser.add_argument("-c", "--config", type=str, help="绑定进线程配置文件路径,自定义绑定推理进线程时使用")
    bind_parser.add_argument("-l", "--log-level", type=int, default=1, choices=[0, 1, 2, 3], help="日志级别")

    args = parser.parse_args()

    log_level = LOG_MAP.get(args.log_level, logging.INFO)
    logging.basicConfig(level=log_level, format='[%(asctime)s] [%(levelname)s]:%(message)s')

    if args.command == "bind":
        cpu_binder.run(args)
    else:
        parser.print_help()


if __name__ == "__main__":
    main()