From 355dc1bfd94c8410d9236af059da749f1ab5d927 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Mart=C3=AD?= Date: Sat, 9 Nov 2013 12:48:39 +0100 Subject: [PATCH] Fix crashes when writing boolean metadata fields --- fdroidserver/common.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index dbf7db6c..ef277951 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -31,6 +31,12 @@ import magic config = None options = None +# These can only contain 'yes' or 'no' +bool_keys = ( + 'submodules', 'oldsdkloc', + 'forceversion', 'forcevercode', + 'fixtrans', 'fixapos', 'novcheck') + def read_config(opts, config_file='config.py'): """Read the repository config @@ -686,8 +692,7 @@ def parse_metadata(metafile): mode = 0 add_comments(None) - # These can only contain 'yes' or 'no' - for key in ('submodules', 'oldsdkloc', 'forceversion', 'forcevercode', 'fixtrans', 'fixapos', 'novcheck'): + for key in bool_keys: for build in thisinfo['builds']: if key not in build: build[key] = False @@ -821,13 +826,17 @@ def write_metadata(dest, app): def write_builditem(key, value): if key not in ['version', 'vercode', 'origlines']: + if key in bool_keys: + if not value: + return + value = 'yes' if options.verbose: print "...writing {0} : {1}".format(key, value) - outline = ' ' + key + '=' - bits = value.split('&& ') - outline += '&& \\\n '.join([s.lstrip() for s in bits]) + outline = ' %s=' % key + outline += '&& \\\n '.join([s.lstrip() for s in value.split('&& ')]) outline += '\n' mf.write(outline) + for key in keyorder: if key in build: write_builditem(key, build[key]) -- 2.30.2