Added IN_GAME_ERRORS setting for convenient debugging during development (False by default)
This commit is contained in:
parent
4f02ec1cbe
commit
4cb19bec59
3 changed files with 106 additions and 39 deletions
|
|
@ -66,6 +66,7 @@ the 'Fishing' set. Fishing from a boat? No problem!
|
|||
from builtins import object
|
||||
from future.utils import raise_
|
||||
import sys
|
||||
from traceback import format_exc
|
||||
from importlib import import_module
|
||||
from inspect import trace
|
||||
from django.conf import settings
|
||||
|
|
@ -78,6 +79,29 @@ __all__ = ("import_cmdset", "CmdSetHandler")
|
|||
|
||||
_CACHED_CMDSETS = {}
|
||||
_CMDSET_PATHS = utils.make_iter(settings.CMDSET_PATHS)
|
||||
_IN_GAME_ERRORS = settings.IN_GAME_ERRORS
|
||||
|
||||
# Output strings
|
||||
|
||||
_ERROR_CMDSET_IMPORT = _(
|
||||
"""{traceback}
|
||||
Error loading cmdset '{path}'
|
||||
(Traceback was logged {timestamp})""")
|
||||
|
||||
_ERROR_CMDSET_KEYERROR = _(
|
||||
"""Error loading cmdset: No cmdset class '{classname}' in '{path}'.
|
||||
(Traceback was logged {timestamp})""")
|
||||
|
||||
_ERROR_CMDSET_SYNTAXERROR = _(
|
||||
"""{traceback}
|
||||
SyntaxError encountered when loading cmdset '{path}'.
|
||||
(Traceback was logged {timestamp})""")
|
||||
|
||||
_ERROR_CMDSET_EXCEPTION = _(
|
||||
"""{traceback}
|
||||
Compile/Run error when loading cmdset '{path}'.",
|
||||
(Traceback was logged {timestamp})""")
|
||||
|
||||
|
||||
class _ErrorCmdSet(CmdSet):
|
||||
"""
|
||||
|
|
@ -160,25 +184,34 @@ def import_cmdset(path, cmdsetobj, emit_to_obj=None, no_logging=False):
|
|||
cmdsetclass = cmdsetclass(cmdsetobj)
|
||||
errstring = ""
|
||||
return cmdsetclass
|
||||
except ImportError as e:
|
||||
except ImportError as err:
|
||||
logger.log_trace()
|
||||
errstring += _("\nError loading cmdset {path}: \"{error}\"")
|
||||
errstring = errstring.format(path=python_path, error=e)
|
||||
errstring += _ERROR_CMDSET_IMPORT
|
||||
if _IN_GAME_ERRORS:
|
||||
errstring = errstring.format(path=python_path, traceback=format_exc(), timestamp=logger.timeformat())
|
||||
else:
|
||||
errstring = errstring.format(path=python_path, traceback=err, timestamp=logger.timeformat())
|
||||
break
|
||||
except KeyError:
|
||||
logger.log_trace()
|
||||
errstring += _("\nError in loading cmdset: No cmdset class '{classname}' in {path}.")
|
||||
errstring = errstring.format(classname=classname, path=python_path)
|
||||
errstring += _ERROR_CMDSET_KEYERROR
|
||||
errstring = errstring.format(classname=classname, path=python_path, timestamp=logger.timeformat())
|
||||
break
|
||||
except SyntaxError as e:
|
||||
except SyntaxError as err:
|
||||
logger.log_trace()
|
||||
errstring += _("\nSyntaxError encountered when loading cmdset '{path}': \"{error}\".")
|
||||
errstring = errstring.format(path=python_path, error=e)
|
||||
errstring += _ERROR_CMDSET_SYNTAXERROR
|
||||
if _IN_GAME_ERRORS:
|
||||
errstring = errstring.format(path=python_path, traceback=format_exc(), timestamp=logger.timeformat())
|
||||
else:
|
||||
errstring = errstring.format(path=python_path, traceback=err, timestamp=logger.timeformat())
|
||||
break
|
||||
except Exception as e:
|
||||
except Exception as err:
|
||||
logger.log_trace()
|
||||
errstring += _("\nCompile/Run error when loading cmdset '{path}': \"{error}\".")
|
||||
errstring = errstring.format(path=python_path, error=e)
|
||||
errstring += _ERROR_CMDSET_EXCEPTION
|
||||
if _IN_GAME_ERRORS:
|
||||
errstring = errstring.format(path=python_path, traceback=format_exc(), timestamp=logger.timeformat())
|
||||
else:
|
||||
errstring = errstring.format(path=python_path, traceback=err, timestamp=logger.timeformat())
|
||||
break
|
||||
|
||||
if errstring:
|
||||
|
|
@ -189,7 +222,7 @@ def import_cmdset(path, cmdsetobj, emit_to_obj=None, no_logging=False):
|
|||
if emit_to_obj and not ServerConfig.objects.conf("server_starting_mode"):
|
||||
emit_to_obj.msg(errstring)
|
||||
err_cmdset = _ErrorCmdSet()
|
||||
err_cmdset.errmessage = errstring + _("\n (See log for details.)")
|
||||
err_cmdset.errmessage = errstring
|
||||
return err_cmdset
|
||||
|
||||
# classes
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue