chiark / gitweb /
Add "Changelog:" metadata field.
authorBoris Kraut <krt@nurfuerspam.de>
Sun, 11 Jan 2015 01:26:41 +0000 (02:26 +0100)
committerBoris Kraut <krt@nurfuerspam.de>
Sun, 11 Jan 2015 01:26:41 +0000 (02:26 +0100)
docs/fdroid.texi
fdroidserver/import.py
fdroidserver/lint.py
fdroidserver/metadata.py
fdroidserver/update.py
wp-fdroid/wp-fdroid.php

index a1d010771e86880ade7f3edd972e2667ac3ea624..ef1c374b58fc218326b486b3e6cbd88c99db186a 100644 (file)
@@ -468,6 +468,7 @@ The following sections describe the fields recognised within the file.
 * Web Site::
 * Source Code::
 * Issue Tracker::
+* Changelog::
 * Donate::
 * FlattrID::
 * Bitcoin::
@@ -632,6 +633,16 @@ applications have one.
 
 This is converted to (@code{<tracker>}) in the public index file.
 
+@node Changelog
+@section Changelog
+
+@cindex Changelog
+
+The URL for the application's changelog. Optional, since not all
+applications have one.
+
+This is converted to (@code{<changelog>}) in the public index file.
+
 @node Donate
 @section Donate
 
index c837fffdbd8e051d3275b5061a135455489a3a1c..c2f0bbd74700d86b87f94604ce9c04ee5d3bd746 100644 (file)
@@ -128,6 +128,7 @@ def main():
     # Figure out what kind of project it is...
     projecttype = None
     issuetracker = None
+    changelog = None
     license = None
     website = url  # by default, we might override it
     if url.startswith('git://'):
@@ -142,6 +143,7 @@ def main():
         repotype = 'git'
         sourcecode = url
         issuetracker = url + '/issues'
+        changelog = url + '/commits'
     elif url.startswith('https://gitlab.com/'):
         projecttype = 'gitlab'
         repo = url
@@ -275,6 +277,8 @@ def main():
     app['Source Code'] = sourcecode
     if issuetracker:
         app['Issue Tracker'] = issuetracker
+    if changelog:
+        app['Changelog'] = changelog
     if license:
         app['License'] = license
     app['Repo Type'] = repotype
index 8cf1bf61d903d340f44c8f121f7ae1f8dbbd71d5..19dfcadacb6703c793c03cb4d1b94351e5f39020 100644 (file)
@@ -74,6 +74,14 @@ regex_warnings = {
         (re.compile(r'.*[^sS]://gitorious\.org/.*'),
          "gitorious URLs should always use https:// not http://"),
     ],
+    'Changelog': [
+        (re.compile(r'.*[^sS]://code\.google\.com/.*'),
+         "code.google.com URLs should always use https:// not http://"),
+        (re.compile(r'.*[^sS]://github\.com/.*'),
+         "github URLs should always use https:// not http://"),
+        (re.compile(r'.*[^sS]://gitorious\.org/.*'),
+         "gitorious URLs should always use https:// not http://"),
+    ],
     'License': [
         (re.compile(r'^(|None|Unknown)$'),
          "No license specified"),
@@ -119,6 +127,10 @@ regex_pedantic = {
         (re.compile(r'.*github\.com/[^/]+/[^/]+/issues/.*'),
          "/issues is often enough on its own"),
     ],
+    'Changelog': [
+        (re.compile(r'.*commit.*', re.IGNORECASE),
+         "Not every commit log is suitable as change log"),
+    ],
     'Summary': [
         (re.compile(r'.*\b(free software|open source)\b.*', re.IGNORECASE),
          "No need to specify that the app is Free Software"),
index 2e29cd796eba016135d0810720defe8d978c5bc3..5b56048c0f353b81b2976dec499d53dab6ffef3b 100644 (file)
@@ -48,6 +48,7 @@ app_defaults = OrderedDict([
     ('Web Site', ''),
     ('Source Code', ''),
     ('Issue Tracker', ''),
+    ('Changelog', ''),
     ('Donate', None),
     ('FlattrID', None),
     ('Bitcoin', None),
@@ -169,7 +170,7 @@ valuetypes = {
 
     FieldValidator("HTTP link",
                    r'^http[s]?://', None,
-                   ["Web Site", "Source Code", "Issue Tracker", "Donate"], []),
+                   ["Web Site", "Source Code", "Issue Tracker", "Changelog", "Donate"], []),
 
     FieldValidator("Bitcoin address",
                    r'^[a-zA-Z0-9]{27,34}$', None,
@@ -826,6 +827,7 @@ def write_metadata(dest, app):
     writefield('Web Site')
     writefield('Source Code')
     writefield('Issue Tracker')
+    writefield('Changelog')
     writefield_nonempty('Donate')
     writefield_nonempty('FlattrID')
     writefield_nonempty('Bitcoin')
index 1ec8dad5f66c87b028a8722022efac3c3accb942..cc42fe2f2892a3bb0c545da1d8b51a9c684f5314 100644 (file)
@@ -92,7 +92,7 @@ def update_wiki(apps, sortedids, apks):
         if app['AntiFeatures']:
             for af in app['AntiFeatures'].split(','):
                 wikidata += '{{AntiFeature|' + af + '}}\n'
-        wikidata += '{{App|id=%s|name=%s|added=%s|lastupdated=%s|source=%s|tracker=%s|web=%s|donate=%s|flattr=%s|bitcoin=%s|litecoin=%s|dogecoin=%s|license=%s|root=%s}}\n' % (
+        wikidata += '{{App|id=%s|name=%s|added=%s|lastupdated=%s|source=%s|tracker=%s|web=%s|changelog=%s|donate=%s|flattr=%s|bitcoin=%s|litecoin=%s|dogecoin=%s|license=%s|root=%s}}\n' % (
             appid,
             app['Name'],
             time.strftime('%Y-%m-%d', app['added']) if 'added' in app else '',
@@ -100,6 +100,7 @@ def update_wiki(apps, sortedids, apks):
             app['Source Code'],
             app['Issue Tracker'],
             app['Web Site'],
+            app['Changelog'],
             app['Donate'],
             app['FlattrID'],
             app['Bitcoin'],
@@ -780,6 +781,7 @@ def make_index(apps, sortedids, apks, repodir, archive, categories):
         addElement('web', app['Web Site'], doc, apel)
         addElement('source', app['Source Code'], doc, apel)
         addElement('tracker', app['Issue Tracker'], doc, apel)
+        addElement('changelog', app['Changelog'], doc, apel)
         if app['Donate']:
             addElement('donate', app['Donate'], doc, apel)
         if app['Bitcoin']:
@@ -1064,6 +1066,7 @@ def main():
                 f.write("Web Site:\n")
                 f.write("Source Code:\n")
                 f.write("Issue Tracker:\n")
+                f.write("Changelog:\n")
                 f.write("Summary:" + apk['name'] + "\n")
                 f.write("Description:\n")
                 f.write(apk['name'] + "\n")
index 98fffbdf2b40ac6052dabbe06a43c22b50b6b3bf..bdb53f29da7a618b5b73eb405aef5fe8cf615354 100644 (file)
@@ -284,6 +284,9 @@ class FDroid
                                        case "tracker":
                                                $issues=$el;
                                                break;
+                                       case "changelog":
+                                               $changelog=$el;
+                                               break;
                                        case "donate":
                                                $donate=$el;
                                                break;
@@ -398,6 +401,8 @@ class FDroid
                                        $out.='<b>Issue Tracker:</b> <a href="'.$issues.'">'.$issues.'</a><br />';
                                if(strlen($source)>0)
                                        $out.='<b>Source Code:</b> <a href="'.$source.'">'.$source.'</a><br />';
+                               if(strlen($changelog)>0)
+                                       $out.='<b>Changelog:</b> <a href="'.$changelog.'">'.$changelog.'</a><br />';
                                if(isset($donate) && strlen($donate)>0)
                                        $out.='<b>Donate:</b> <a href="'.$donate.'">'.$donate.'</a><br />';
                                if(isset($flattr) && strlen($flattr)>0)