From fe9f19f1590a821b6ab874fe2f75c1efbb88b789 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Fri, 27 Feb 2015 21:01:30 -0800 Subject: [PATCH] Provide a more informative error message and an exception when a XML file is not found for an item. --- etgtools/__init__.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/etgtools/__init__.py b/etgtools/__init__.py index d03d5a05..637861c0 100644 --- a/etgtools/__init__.py +++ b/etgtools/__init__.py @@ -27,6 +27,8 @@ cfg = Config(noWxConfig=True) phoenixRoot = cfg.ROOT_DIR XMLSRC = cfg.DOXY_XML_DIR +class DoxyXMLError(Exception): + pass #--------------------------------------------------------------------------- @@ -42,15 +44,17 @@ def parseDoxyXML(module, class_or_filename_list): Doxygen XML output folder. """ - def _classToDoxyName(name, base='class'): + def _classToDoxyName(name, attempts, base='class'): import string filename = base for c in name: if c in string.ascii_uppercase: filename += '_' + c.lower() else: - filename += c - return os.path.join(XMLSRC, filename) + '.xml' + filename += c + filename = os.path.join(XMLSRC, filename) + '.xml' + attempts.append(filename) + return filename def _includeToDoxyName(name): name = os.path.basename(name) @@ -63,12 +67,20 @@ def parseDoxyXML(module, class_or_filename_list): return os.path.join(XMLSRC, name) + '.xml', name + '.xml' for class_or_filename in class_or_filename_list: - pathname = _classToDoxyName(class_or_filename) + attempts = [] + pathname = _classToDoxyName(class_or_filename, attempts) if not os.path.exists(pathname): - pathname = _classToDoxyName(class_or_filename, 'struct') + pathname = _classToDoxyName(class_or_filename, attempts, 'struct') if not os.path.exists(pathname): pathname = os.path.join(XMLSRC, class_or_filename) + attempts.append(pathname) + if not os.path.exists(pathname): + msg = "Unable to find xml file for ITEM: %s" % class_or_filename + print(msg) + print("Tried: %s" % ('\n '.join(attempts))) + raise DoxyXMLError(msg) + if verbose(): print("Loading %s..." % pathname) _filesparsed.add(pathname)