diff --git a/zulip_bots/zulip_bots/run.py b/zulip_bots/zulip_bots/run.py index 5ba101b99..4e33f75f6 100755 --- a/zulip_bots/zulip_bots/run.py +++ b/zulip_bots/zulip_bots/run.py @@ -3,6 +3,7 @@ import argparse import logging import os +import re import sys from typing import Optional @@ -17,7 +18,32 @@ current_dir = os.path.dirname(os.path.abspath(__file__)) +def normalize_args() -> None: + """Replaces various dash variations in arguments with standard options in command lines interfaces.""" + dash_variations = r"[\u002D\u2010\u2011\u2012\u2013\u2014\u2015]" + for i, arg in enumerate(sys.argv): + if re.match(rf"^{dash_variations}{{2}}config{dash_variations}file$", arg): + sys.argv[i] = "--config-file" + elif re.match(rf"^{dash_variations}c$", arg): + sys.argv[i] = "-c" + elif re.match( + rf"^{dash_variations}{{2}}bot{dash_variations}config{dash_variations}file$", arg + ): + sys.argv[i] = "--bot-config-file" + elif re.match(rf"^{dash_variations}c$", arg): + sys.argv[i] = "-b" + elif re.match(rf"^{dash_variations}{{2}}force$", arg): + sys.argv[i] = "--force" + elif re.match(rf"^{dash_variations}{{2}}registry$", arg): + sys.argv[i] = "--registry" + elif re.match(rf"^{dash_variations}r$", arg): + sys.argv[i] = "-r" + elif re.match(rf"^{dash_variations}{{2}}provision$", arg): + sys.argv[i] = "--provision" + + def parse_args() -> argparse.Namespace: + normalize_args() # Fix arguments before parsing usage = """ zulip-run-bot --config-file ~/zuliprc zulip-run-bot --help