# HG changeset patch # User Ludovic Chabant # Date 1392676710 28800 # Node ID 8411752007004b657dd472e50d034e2ccdb2773c # Parent 5bf00af997acbad0de4602a107acbfb0ac7f4dd5 Some basic error handling and performance timing for Witch. diff -r 5bf00af997ac -r 841175200700 wikked/witch.py --- a/wikked/witch.py Mon Feb 17 14:37:53 2014 -0800 +++ b/wikked/witch.py Mon Feb 17 14:38:30 2014 -0800 @@ -1,6 +1,7 @@ import sys import logging import argparse +import datetime import colorama from wikked.commands.base import command_classes from wikked.utils import find_wiki_root @@ -104,7 +105,19 @@ wiki.start() # Run the command! - ctx = WitchContext(params, wiki, result) - exit_code = result.func(ctx) - return exit_code + now = datetime.datetime.now() + try: + ctx = WitchContext(params, wiki, result) + exit_code = result.func(ctx) + if exit_code is not None: + return exit_code + return 0 + except Exception as e: + logger.critical("Critical error while running witch command:") + logger.exception(e) + return -1 + finally: + after = datetime.datetime.now() + delta = after - now + logger.debug("Ran command in %fs" % delta.total_seconds())