mirror of
https://github.com/onyx-and-iris/obsws-cli.git
synced 2025-06-27 14:00:30 +01:00
improve the output of projector open if the monitor index is invalid (suggests prj ls-m) fix highlight for sceneitem commands in _validate_sources() patch bump
72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
"""module defining a custom group class for handling command name aliases."""
|
|
|
|
import re
|
|
|
|
import typer
|
|
|
|
|
|
class RootTyperAliasGroup(typer.core.TyperGroup):
|
|
"""A custom group class to handle command name aliases for the root typer."""
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
"""Initialize the AliasGroup."""
|
|
super().__init__(*args, **kwargs)
|
|
self.no_args_is_help = True
|
|
|
|
def get_command(self, ctx, cmd_name):
|
|
"""Get a command by name."""
|
|
match cmd_name:
|
|
case 'f':
|
|
cmd_name = 'filter'
|
|
case 'g':
|
|
cmd_name = 'group'
|
|
case 'hk':
|
|
cmd_name = 'hotkey'
|
|
case 'i':
|
|
cmd_name = 'input'
|
|
case 'prf':
|
|
cmd_name = 'profile'
|
|
case 'prj':
|
|
cmd_name = 'projector'
|
|
case 'rc':
|
|
cmd_name = 'record'
|
|
case 'rb':
|
|
cmd_name = 'replaybuffer'
|
|
case 'sc':
|
|
cmd_name = 'scene'
|
|
case 'scc':
|
|
cmd_name = 'scenecollection'
|
|
case 'si':
|
|
cmd_name = 'sceneitem'
|
|
case 'ss':
|
|
cmd_name = 'screenshot'
|
|
case 'st':
|
|
cmd_name = 'stream'
|
|
case 'sm':
|
|
cmd_name = 'studiomode'
|
|
case 'vc':
|
|
cmd_name = 'virtualcam'
|
|
return super().get_command(ctx, cmd_name)
|
|
|
|
|
|
class SubTyperAliasGroup(typer.core.TyperGroup):
|
|
"""A custom group class to handle command name aliases for sub typers."""
|
|
|
|
_CMD_SPLIT_P = re.compile(r' ?[,|] ?')
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
"""Initialize the AliasGroup."""
|
|
super().__init__(*args, **kwargs)
|
|
self.no_args_is_help = True
|
|
|
|
def get_command(self, ctx, cmd_name):
|
|
"""Get a command by name."""
|
|
cmd_name = self._group_cmd_name(cmd_name)
|
|
return super().get_command(ctx, cmd_name)
|
|
|
|
def _group_cmd_name(self, default_name):
|
|
for cmd in self.commands.values():
|
|
if cmd.name and default_name in self._CMD_SPLIT_P.split(cmd.name):
|
|
return cmd.name
|
|
return default_name
|