nicfit/shell/command.py
def _cmdRegex(self, cmd_grp=None):
        """Get command regex string and completer dict."""
        cmd_grp = cmd_grp or "cmd"
        help_opts = ("-h", "--help")

        cmd = self.name()
        names = "|".join([re.escape(cmd)] +
                         [re.escape(a) for a in self.aliases()])

        opts = []
        for action in self.parser._actions:
            opts += [a for a in action.option_strings
                        if a not in help_opts]

        opts_re = "|".join([re.escape(o) for o in opts])
        if opts_re:
            opts_re = rf"(\s+(?P<{cmd_grp}_opts>{opts_re}))*"

        help_re = "|".join([re.escape(o) for o in help_opts])
        help_re = rf"(\s+(?P<HELP_OPTS>{help_re}))*"

        completers = {}
        if opts_re:
            completers[f"{cmd_grp}_opts"] = WordCompleter(opts)
        # Singe Help completer added elsewhere

        return tuple([
            rf"""(?P<{cmd_grp}>{names}){opts_re}{help_re}""",
            completers
        ])
def _cmdRegex(self, cmd_grp=None):
        """Get command regex string and completer dict."""
        cmd_grp = cmd_grp or "cmd"
        help_opts = ("-h", "--help")

        cmd = self.name()
        names = "|".join([re.escape(cmd)] +
                         [re.escape(a) for a in self.aliases()])

        opts = []
        for action in self.parser._actions:
            opts += [a for a in action.option_strings
                        if a not in help_opts]

        opts_re = "|".join([re.escape(o) for o in opts])
        if opts_re:
            opts_re = rf"(\s+(?P<{cmd_grp}_opts>{opts_re}))*"

        help_re = "|".join([re.escape(o) for o in help_opts])
        help_re = rf"(\s+(?P<HELP_OPTS>{help_re}))*"

        completers = {}
        if opts_re:
            completers[f"{cmd_grp}_opts"] = WordCompleter(opts)
        # Singe Help completer added elsewhere

        return tuple([
            rf"""(?P<{cmd_grp}>{names}){opts_re}{help_re}""",
            completers
        ])
Get command regex string and completer dict.