diff --git a/CHANGELOG.md b/CHANGELOG.md index 36bc4121bc..37cd3822cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ ### Already in master +- Moved behavior of default `Command` and `MuxCommand` `.func()` to new `.get_command_info()` +method so the debug info can be called even if `.func()` is overloaded. `.func()` now calls +this new method by default. (Volund) - `py` command now reroutes stdout to output results in-game client. `py` without arguments starts a full interactive Python console. - Webclient default to a single input pane instead of two. Now defaults to no help-popup. diff --git a/evennia/commands/command.py b/evennia/commands/command.py index b24f5523d2..d399769bd6 100644 --- a/evennia/commands/command.py +++ b/evennia/commands/command.py @@ -401,12 +401,20 @@ class Command(object, metaclass=CommandMeta): """ pass - def func(self): + def get_command_info(self): """ - This is the actual executing part of the command. It is - called directly after self.parse(). See the docstring of this - module for which object properties are available (beyond those - set in self.parse()) + This is the default output of func() if no func() overload is done. + Provided here as a separate method so that it can be called for debugging + purposes when making commands. + + """ + self.get_command_info() + + def get_command_info(self): + """ + This is the default output of func() if no func() overload is done. + Provided here as a separate method so that it can be called for debugging + purposes when making commands. """ variables = "\n".join( @@ -438,6 +446,16 @@ Command {self} has no defined `func()` - showing on-command variables: self.caller.msg(string) + def func(self): + """ + This is the actual executing part of the command. It is + called directly after self.parse(). See the docstring of this + module for which object properties are available (beyond those + set in self.parse()) + + """ + self.get_command_info() + def get_extra_info(self, caller, **kwargs): """ Display some extra information that may help distinguish this diff --git a/evennia/commands/default/muxcommand.py b/evennia/commands/default/muxcommand.py index d288f5f980..5e0967a130 100644 --- a/evennia/commands/default/muxcommand.py +++ b/evennia/commands/default/muxcommand.py @@ -202,11 +202,15 @@ class MuxCommand(Command): else: self.character = None - def func(self): + def get_command_info(self): """ - This is the hook function that actually does all the work. It is called - by the cmdhandler right after self.parser() finishes, and so has access - to all the variables defined therein. + Update of parent class's get_command_info() for MuxCommand. + """ + self.get_command_info() + + def get_command_info(self): + """ + Update of parent class's get_command_info() for MuxCommand. """ variables = "\n".join( " |w{}|n ({}): {}".format(key, type(val), val) for key, val in self.__dict__.items() @@ -245,6 +249,14 @@ Command {self} has no defined `func()` - showing on-command variables: No child string += "-" * 50 self.caller.msg(string) + def func(self): + """ + This is the hook function that actually does all the work. It is called + by the cmdhandler right after self.parser() finishes, and so has access + to all the variables defined therein. + """ + self.get_command_info() + class MuxAccountCommand(MuxCommand): """