chiark / gitweb /
Pre-scan descriptions to catch cross-linking errors earlier
authorCiaran Gultnieks <ciaran@ciarang.com>
Thu, 27 Sep 2012 19:09:45 +0000 (20:09 +0100)
committerCiaran Gultnieks <ciaran@ciarang.com>
Thu, 27 Sep 2012 19:09:45 +0000 (20:09 +0100)
fdroidserver/common.py

index c8519ca4e949b0bacd05d66c965182996f89c926..964f0cf1370eeff89d1eeded9ccc07036e583e42 100644 (file)
@@ -613,6 +613,21 @@ def read_metadata(verbose=False):
         if verbose:
             print "Reading " + metafile
         apps.append(parse_metadata(metafile, verbose=verbose))
+
+    # Parse all descriptions at load time, just to ensure cross-referencing
+    # errors are caught early rather than when they hit the build server.
+    def linkres(link):
+        for app in apps:
+            if app['id'] == link:
+                return ("fdroid.app:" + link, "Dummy name - don't know yet")
+        raise MetaDataException("Cannot resolve app id " + link)
+    for app in apps:
+        try:
+            description_html(app['Description'], linkres)
+        except Exception, e:
+            raise MetaDataException("Problem with description of " + app['id'] +
+                    " - " + str(e))
+
     return apps
 
 # Formatter for descriptions. Create an instance, and call parseline() with