try_plugins may now return error string
authorJack Miller <jack@codezen.org>
Wed, 29 Oct 2014 19:15:13 +0000 (14:15 -0500)
committerJack Miller <jack@codezen.org>
Wed, 29 Oct 2014 19:15:13 +0000 (14:15 -0500)
If there were plugin-fatal errors on import, that information is
probably interesting.

canto_next/plugins.py

index 5a440d6..c7388d6 100644 (file)
@@ -46,6 +46,8 @@ def try_plugins(topdir, plugin_default=True, disabled_plugins=[], enabled_plugin
     # Add plugin path to front of Python path.
     sys.path.insert(0, topdir)
 
+    all_errors = ""
+
     # Go ahead and import all .py
     for fname in sorted(os.listdir(p)):
         if fname.endswith(".py") and fname != "__init__.py":
@@ -67,7 +69,12 @@ def try_plugins(topdir, plugin_default=True, disabled_plugins=[], enabled_plugin
             except Exception as e:
                 tb = traceback.format_exc()
                 log.error("Exception importing file %s" % fname)
-                log.error("\n" + "".join(tb))
+                nice = "".join(tb)
+                all_errors += nice
+                log.error(nice)
+
+    if all_errors != "":
+        return all_errors
 
 class PluginHandler(object):
     def __init__(self):