chiark / gitweb /
include push install/uninstall requests in index-v1
authorHans-Christoph Steiner <hans@eds.org>
Mon, 5 Dec 2016 20:06:04 +0000 (21:06 +0100)
committerHans-Christoph Steiner <hans@eds.org>
Fri, 17 Mar 2017 12:55:40 +0000 (13:55 +0100)
Since the index-v1 is generated straight from the internal dict, this just
moves the generation earlier, and feeds it into the apps dict.

fdroidserver/update.py

index ece1d2bff725269c4c351bfc8e466ac168550ee2..05a11678934d39eece5090a6c10bbad3e257eace 100644 (file)
@@ -1105,11 +1105,24 @@ def make_index(apps, sortedids, apks, repodir, archive):
                 appsWithPackages[packageName] = newapp
                 break
 
-    make_index_v0(appsWithPackages, apks, repodir, repodict)
-    make_index_v1(appsWithPackages, apks, repodir, repodict)
+    requestsdict = dict()
+    for command in ('install', 'uninstall'):
+        packageNames = []
+        key = command + '_list'
+        if key in config:
+            if isinstance(config[key], str):
+                packageNames = [config[key]]
+            elif all(isinstance(item, str) for item in config[key]):
+                packageNames = config[key]
+            else:
+                raise TypeError('only accepts strings, lists, and tuples')
+        requestsdict[command] = packageNames
 
+    make_index_v0(appsWithPackages, apks, repodir, repodict, requestsdict)
+    make_index_v1(appsWithPackages, apks, repodir, repodict, requestsdict)
 
-def make_index_v1(apps, packages, repodir, repodict):
+
+def make_index_v1(apps, packages, repodir, repodict, requestsdict):
 
     def _index_encoder_default(obj):
         if isinstance(obj, set):
@@ -1120,6 +1133,7 @@ def make_index_v1(apps, packages, repodir, repodict):
 
     output = collections.OrderedDict()
     output['repo'] = repodict
+    output['requests'] = requestsdict
 
     appslist = []
     output['apps'] = appslist
@@ -1184,7 +1198,7 @@ def make_index_v1(apps, packages, repodir, repodict):
     os.remove(index_file)
 
 
-def make_index_v0(apps, apks, repodir, repodict):
+def make_index_v0(apps, apks, repodir, repodict, requestsdict):
     '''aka index.jar aka index.xml'''
 
     doc = Document()
@@ -1231,16 +1245,7 @@ def make_index_v0(apps, apks, repodir, repodict):
     root.appendChild(repoel)
 
     for command in ('install', 'uninstall'):
-        packageNames = []
-        key = command + '_list'
-        if key in config:
-            if isinstance(config[key], str):
-                packageNames = [config[key]]
-            elif all(isinstance(item, str) for item in config[key]):
-                packageNames = config[key]
-            else:
-                raise TypeError('only accepts strings, lists, and tuples')
-        for packageName in packageNames:
+        for packageName in requestsdict[command]:
             element = doc.createElement(command)
             root.appendChild(element)
             element.setAttribute('packageName', packageName)