diff --git a/docs/fdroid.texi b/docs/fdroid.texi index 26689477..2efd34c3 100644 --- a/docs/fdroid.texi +++ b/docs/fdroid.texi @@ -470,6 +470,7 @@ The following sections describe the fields recognised within the file. * Web Site:: * Source Code:: * Issue Tracker:: +* Changelog:: * Donate:: * FlattrID:: * Bitcoin:: @@ -634,6 +635,16 @@ applications have one. This is converted to (@code{}) 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{}) in the public index file. + @node Donate @section Donate diff --git a/fdroidserver/import.py b/fdroidserver/import.py index fa9c0253..5e0c6b02 100644 --- a/fdroidserver/import.py +++ b/fdroidserver/import.py @@ -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://'): @@ -143,6 +144,7 @@ def main(): sourcecode = url issuetracker = url + '/issues' website = "" + changelog = url + '/commits' elif url.startswith('https://gitlab.com/'): projecttype = 'gitlab' repo = url @@ -286,6 +288,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 diff --git a/fdroidserver/lint.py b/fdroidserver/lint.py index 55722506..169dc147 100644 --- a/fdroidserver/lint.py +++ b/fdroidserver/lint.py @@ -74,6 +74,14 @@ regex_warnings = { # (re.compile(r'.*://code\.google\.com/.*'), # "code.google.com will be soon switching down, perhaps it moved to github.com?"), ], + '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"), @@ -117,6 +125,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'.*[a-z0-9][.!?][ $]'), "Punctuation should be avoided"), diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 5fc92f01..0508b74f 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -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, @@ -830,6 +831,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') diff --git a/fdroidserver/update.py b/fdroidserver/update.py index a08ae85e..1d31a2be 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -94,7 +94,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 '', @@ -102,6 +102,7 @@ def update_wiki(apps, sortedids, apks): app['Source Code'], app['Issue Tracker'], app['Web Site'], + app['Changelog'], app['Donate'], app['FlattrID'], app['Bitcoin'], @@ -814,6 +815,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']: @@ -1133,6 +1135,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") diff --git a/wp-fdroid/wp-fdroid.php b/wp-fdroid/wp-fdroid.php index 03028217..650e6a90 100644 --- a/wp-fdroid/wp-fdroid.php +++ b/wp-fdroid/wp-fdroid.php @@ -285,6 +285,9 @@ class FDroid case "tracker": $issues=$el; break; + case "changelog": + $changelog=$el; + break; case "donate": $donate=$el; break; @@ -399,6 +402,8 @@ class FDroid $out.='Issue Tracker: '.$issues.'
'; if(strlen($source)>0) $out.='Source Code: '.$source.'
'; + if(strlen($changelog)>0) + $out.='Changelog: '.$changelog.'
'; if(isset($donate) && strlen($donate)>0) $out.='Donate: '.$donate.'
'; if(isset($flattr) && strlen($flattr)>0)