123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from collections.abc import Callable
- from typing import TypeVar, Optional
- from ..types import Message, Context, Command
- from ..failure import RollbotFailure
- from .base import Injector, Simple
- from .args import ArgListSplitOn, ArgParse, Arg
- __all__ = [
- "Subcommand",
- ]
- T = TypeVar("T")
- def get_subc_args(msg: Message) -> str:
- if (sc := msg.command.get_subcommand()) is not None:
- return sc.args
- RollbotFailure.MISSING_SUBCOMMAND.raise_exc()
- class SubcArgListSplitOn(ArgListSplitOn):
- def get_args(self, message: Message) -> str:
- return get_subc_args(message)
- class SubcArgParse(ArgParse):
- def get_args(self, message: Message) -> str:
- return get_subc_args(message)
- SubcArgList = SubcArgListSplitOn()
- class SubcArg(Arg):
- def arg_source(self) -> Injector[list[str]]:
- return SubcArgList
- class _Subcommand(Simple[Optional[Command]]):
- Args = Simple[Optional[str]](lambda m, c: get_subc_args(m))
- ArgList = SubcArgList
- ArgListSplitOn = SubcArgListSplitOn
- ArgParse = SubcArgParse
- Arg = SubcArg
- def __init__(self):
- super().__init__(lambda m, c: m.command.get_subcommand())
- Subcommand = _Subcommand()
|