chiark / gitweb /
More wiki update stuff
authorCiaran Gultnieks <ciaran@ciarang.com>
Sun, 26 Aug 2012 10:58:18 +0000 (11:58 +0100)
committerCiaran Gultnieks <ciaran@ciarang.com>
Sun, 26 Aug 2012 10:58:18 +0000 (11:58 +0100)
fdroidserver/common.py
fdroidserver/update.py

index 01e444b49471aed8b11ac19c9a4ad9f5ff50b5b6..9d9787b7d8a8af66aa79c46a8272745ff8e71716 100644 (file)
@@ -822,7 +822,8 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
             raise BuildException("Error running init command")
 
     # Generate (or update) the ant build file, build.xml...
-    if (build.get('update', '.') != 'no' and
+    updatemode = build.get('update', '.')
+    if (updatemode != 'no' and
         not build.has_key('maven')):
         parms = [os.path.join(sdk_path, 'tools', 'android'),
                 'update', 'project', '-p', '.']
@@ -830,10 +831,11 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
         if build.has_key('target'):
             parms.append('-t')
             parms.append(build['target'])
-        update_dirs = build.get('update', '.').split(';')
+        update_dirs = updatemode.split(';')
         # Force build.xml update if necessary...
-        if build.get('update', '.') == 'force' or build.has_key('target'):
-            update_dirs = ['.']
+        if updatemode == 'force' or build.has_key('target'):
+            if updatemode == 'force':
+                update_dirs = ['.']
             buildxml = os.path.join(root_dir, 'build.xml')
             if os.path.exists(buildxml):
                 print 'Force-removing old build.xml'
index 6d25941586373d573214ae5e9dd7e1224bf10623..bdc0e0fbec7321d6e2a6234eb448dca90990ca23 100644 (file)
@@ -47,7 +47,7 @@ def update_wiki(apps, apks, verbose=False):
             wikidata += '{{Disabled|' + app['Disabled'] + '}}\n'
         if app['AntiFeatures']:
             wikidata += '{{AntiFeatures|' + app['AntiFeatures'] + '}}\n'
-        wikidata += '{{App|id=%s|name=%s|added=%s|lastupdated=%s|source=%s|tracker=%s|web=%s|donate=%s|flattr=%s|license=%s|root=%s}}\n'%(
+        wikidata += '{{App|id=%s|name=%s|added=%s|lastupdated=%s|source=%s|tracker=%s|web=%s|donate=%s|flattr=%s|bitcoin=%s|license=%s|root=%s}}\n'%(
                 app['id'],
                 app['Name'],
                 time.strftime('%Y-%m-%d', app['added']) if 'added' in app else '',
@@ -57,21 +57,39 @@ def update_wiki(apps, apks, verbose=False):
                 app['Web Site'],
                 app['Donate'],
                 app['FlattrID'],
+                app['Bitcoin'],
                 app['License'],
                 app.get('Requires Root', 'No'))
-        wikidata += "=Summary=\n"
-        wikidata += app['Summary'] + "\n"
+
+        wikidata += app['Summary']
+        wikidata += " - [http://f-droid.org/repository/browse/?fdid=" + app['id'] + " view in repository]\n\n"
+
         wikidata += "=Description=\n"
         wikidata += common.parse_description(app['Description']) + "\n"
 
+        # Get a list of all packages for this application...
         apklist = []
         gotcurrentver = False
+        cantupdate = False
         for apk in apks:
             if apk['id'] == app['id']:
                 if str(apk['versioncode']) == app['Current Version Code']:
                     gotcurrentver = True
                 apklist.append(apk)
+        # Include ones we can't build, as a special case...
+        for thisbuild in app['builds']:
+            if thisbuild['commit'].startswith('!'):
+                if thisbuild['vercode'] == app['Current Version Code']:
+                    cantupdate = True
+                apklist.append({
+                        #TODO: Nasty: vercode is a string in the build, and an int elsewhere
+                        'versioncode': int(thisbuild['vercode']),
+                        'version': thisbuild['version'],
+                        'buildproblem': thisbuild['commit'][1:]
+                    })
+        # Sort with most recent first...
         apklist = sorted(apklist, key=lambda apk: apk['versioncode'], reverse=True)
+
         wikidata += "=Versions=\n"
         if len(apklist) == 0:
             wikidata += "We currently have no versions of this app available.\n\n"
@@ -82,14 +100,29 @@ def update_wiki(apps, apks, verbose=False):
             wikidata += " (version code " + app['Current Version Code'] + ").\n\n"
         for apk in apklist:
             wikidata += "==" + apk['version'] + "==\n"
+
+            if 'buildproblem' in apk:
+                wikidata += "We can't build this version: " + apk['buildproblem'] + "\n\n"
+            else:
+                wikidata += "This version is built and signed by "
+                if apk.has_key('srcname'):
+                    wikidata += "F-Droid, and guaranteed to correspond to the source tarball published with it.\n\n"
+                else:
+                    wikidata += "the original developer.\n\n"
             wikidata += "Version code: " + str(apk['versioncode']) + '\n'
 
         wikidata += '\n[[Category:' + wikicat + ']]\n'
         if len(apklist) == 0 and not app['Disabled']:
             wikidata += '\n[[Category:Apps with no packages]]\n'
+        elif cantupdate and not app['Disabled']:
+            wikidata += "\n[[Category:Apps we can't update]]\n"
         elif not gotcurrentver and not app['Disabled']:
             wikidata += '\n[[Category:Apps to Update]]\n'
-        generated_pages[app['id']] = wikidata
+
+        # We can't have underscores in the page name, even if they're in
+        # the package ID, because MediaWiki messes with them...
+        pagename = app['id'].replace('_', ' ')
+        generated_pages[pagename] = wikidata
 
         # Make a redirect from the name to the ID too, unless there's
         # already an existing page with the name and it isn't a redirect.
@@ -102,10 +135,10 @@ def update_wiki(apps, apks, verbose=False):
         # with an redirect to itself! (Although it seems like an odd
         # scenario this happens a lot, e.g. where there is metadata but no
         # builds or binaries to extract a name from.
-        if app['Name'] == app['id']:
+        if app['Name'] == pagename:
             noclobber = True
         if not noclobber:
-            generated_pages[app['Name']] = "#REDIRECT [[" + app['id'] + "]]\n[[Category:" + wikicat + "]]"
+            generated_pages[app['Name']] = "#REDIRECT [[" + pagename + "]]\n[[Category:" + wikicat + "]]"
 
     catpages = site.Pages['Category:' + wikicat]
     existingpages = []