chiark / gitweb /
Ensure that builds are always sorted when writing
authorDaniel Martí <mvdan@mvdan.cc>
Sat, 12 Sep 2015 01:19:51 +0000 (18:19 -0700)
committerDaniel Martí <mvdan@mvdan.cc>
Sat, 12 Sep 2015 01:21:07 +0000 (18:21 -0700)
This might not be true if builds are appended by e.g. checkupdates --auto.
This ensures that we sort them again before writing.

fdroidserver/metadata.py

index 2afb590b9cb588494ebefe9d6a740fa6b52be8af..b6f5911dd83f9559e91bf0e5cb3aba1447120ed7 100644 (file)
@@ -602,6 +602,10 @@ def get_default_app_info_list(apps, metadatapath=None):
     return appid, thisinfo
 
 
+def sorted_builds(builds):
+    return sorted(builds, key=lambda build: int(build['vercode']))
+
+
 def post_metadata_parse(thisinfo):
 
     supported_metadata = app_defaults.keys() + ['comments', 'builds', 'id', 'metadatapath']
@@ -663,7 +667,7 @@ def post_metadata_parse(thisinfo):
     for build in thisinfo['builds']:
         fill_build_defaults(build)
 
-    thisinfo['builds'] = sorted(thisinfo['builds'], key=lambda build: int(build['vercode']))
+    thisinfo['builds'] = sorted_builds(thisinfo['builds'])
 
 
 # Parse metadata for a single application.
@@ -1082,7 +1086,7 @@ def write_metadata(dest, app):
         if app['Binaries']:
             writefield('Binaries')
         mf.write('\n')
-    for build in app['builds']:
+    for build in sorted_builds(app['builds']):
 
         if build['version'] == "Ignore":
             continue