import logging
import sys
from argparse import ArgumentParser, Namespace

import bot
from config import TOKENS

LOGGING_LEVELS = {
    'TEST': logging.DEBUG,
    'PROD': logging.INFO
}


def parse_argv() -> Namespace:
    parser = ArgumentParser(description="Starts telegram bot for lessons "
                                        "schedule in HSE")
    parser.add_argument('action', type=str,
                        help="run|update_schedules|init_db")
    parser.add_argument('--token', '-t', type=str, default="TEST",
                        help="api token name (from config) for access to bot")
    parser.add_argument('--workers', '-w', type=int, default=10,
                        help="number of workers for running bot")
    return parser.parse_args()


if __name__ == '__main__':
    args = parse_argv()
    if args.action == "update_schedules":
        bot.update_schedules.main()
    elif args.action == "init_db":
        bot.init_db()
    elif args.action == "run":
        bot.run(
            token=TOKENS.get(args.token.upper(), TOKENS["TEST"]),
            logger_level=LOGGING_LEVELS.get(args.token.upper(), logging.DEBUG),
            workers=args.workers
        )
    else:
        print(f"Wrong command: {args.action}", file=sys.stderr)