diff --git a/argenta/app/models.py b/argenta/app/models.py index 33518c5..2367c2a 100644 --- a/argenta/app/models.py +++ b/argenta/app/models.py @@ -122,10 +122,16 @@ class AppNonStandardHandlers(AppPrinters): for router_entity in self._registered_routers: for command_handler in router_entity.get_command_handlers(): handled_command_trigger = command_handler.get_handled_command().get_trigger() + handled_command_aliases = command_handler.get_handled_command().get_aliases() if handled_command_trigger.lower() == command.get_trigger().lower() and self._ignore_command_register: return False elif handled_command_trigger == command.get_trigger(): return False + elif handled_command_aliases: + if command.get_trigger().lower() in [x.lower() for x in handled_command_aliases] and self._ignore_command_register: + return False + elif command.get_trigger() in handled_command_trigger: + return False if isinstance(self._dividing_line, StaticDividingLine): self._print_func(self._dividing_line.get_full_line()) self._unknown_command_handler(command) @@ -188,6 +194,7 @@ class AppSetups(AppValidators, AppPrinters): all_triggers: list[str] = [] for router_entity in self._registered_routers: all_triggers.extend(router_entity.get_triggers()) + all_triggers.extend(router_entity.get_aliases()) self._autocompleter.initial_setup(all_triggers) self._print_func(self._initial_message) diff --git a/argenta/router/entity.py b/argenta/router/entity.py index 389742c..cb070a3 100644 --- a/argenta/router/entity.py +++ b/argenta/router/entity.py @@ -54,21 +54,29 @@ class Router: for command_handler in self._command_handlers: handle_command = command_handler.get_handled_command() if input_command_name.lower() == handle_command.get_trigger().lower(): - if handle_command.get_registered_flags().get_flags(): - if input_command_flags.get_flags(): - if self._validate_input_flags(handle_command, input_command_flags): - command_handler.handling(input_command_flags) - return - else: - command_handler.handling(input_command_flags) - return - else: - if input_command_flags.get_flags(): - self._not_valid_flag_handler(input_command_flags[0]) - return - else: - command_handler.handling() - return + self._validate_input_command(input_command_flags, command_handler) + elif handle_command.get_aliases(): + if input_command_name.lower() in handle_command.get_aliases(): + self._validate_input_command(input_command_flags, command_handler) + + + def _validate_input_command(self, input_command_flags: InputFlags, command_handler: CommandHandler): + handle_command = command_handler.get_handled_command() + if handle_command.get_registered_flags().get_flags(): + if input_command_flags.get_flags(): + if self._validate_input_flags(handle_command, input_command_flags): + command_handler.handling(input_command_flags) + return + else: + command_handler.handling(input_command_flags) + return + else: + if input_command_flags.get_flags(): + self._not_valid_flag_handler(input_command_flags[0]) + return + else: + command_handler.handling() + return def _validate_input_flags(self, handle_command: Command, input_flags: InputFlags): @@ -117,6 +125,14 @@ class Router: return all_triggers + def get_aliases(self): + all_aliases: list[str] = [] + for command_handler in self._command_handlers: + if command_handler.get_handled_command().get_aliases(): + all_aliases.extend(command_handler.get_handled_command().get_aliases()) + return all_aliases + + def get_command_handlers(self) -> CommandHandlers: return self._command_handlers diff --git a/mock/mock_app/handlers/routers.py b/mock/mock_app/handlers/routers.py index 5571dc9..202d6b8 100644 --- a/mock/mock_app/handlers/routers.py +++ b/mock/mock_app/handlers/routers.py @@ -14,14 +14,14 @@ settings_router: Router = Router() console = Console() -@work_router.command(Command('get', 'Get Help')) +@work_router.command(Command('get', 'Get Help', aliases=['help', 'get_help'])) def command_help(): help_command() -@work_router.command(Command('start', 'Start Solving', Flags(PredeterminedFlags.HOST, PredeterminedFlags.PORT))) +@work_router.command(Command('start', 'Start Solving', Flags(PredeterminedFlags.HOST, PredeterminedFlags.PORT), aliases=['starting'])) def command_start_solving(args: InputFlags): - print(args.get_flag('test')) + print(args.get_flag('host')) @settings_router.command(Command('update', 'Update WordMath'))