From b1a9180d124b90efae5135da31012e1d3ec6647f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Mart=C3=AD?= Date: Thu, 3 Dec 2015 12:55:19 +0100 Subject: [PATCH] Use constants for field/flag types Avoids typos, such as one I just found which was 'strsng' isntead of 'string'. The static analyzer can catch those if they are constants. Comparing ints is also faster than strings, which adds up in readmeta. --- fdroidserver/lint.py | 2 +- fdroidserver/metadata.py | 82 ++++++++++++++++++++++------------------ 2 files changed, 47 insertions(+), 37 deletions(-) diff --git a/fdroidserver/lint.py b/fdroidserver/lint.py index 16ab4be3..ed0e3696 100644 --- a/fdroidserver/lint.py +++ b/fdroidserver/lint.py @@ -108,7 +108,7 @@ def check_regexes(app): for m, r in checks: v = app.get_field(f) t = metadata.metafieldtype(f) - if t == 'multiline': + if t == metadata.TYPE_MULTILINE: for l in v.splitlines(): if m.match(l): yield "%s at line '%s': %s" % (f, l, r) diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 712b456c..d1530480 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -202,21 +202,31 @@ class App(): else: self.set_field(f, v) +TYPE_UNKNOWN = 0 +TYPE_OBSOLETE = 1 +TYPE_STRING = 2 +TYPE_BOOL = 3 +TYPE_LIST = 4 +TYPE_SCRIPT = 5 +TYPE_MULTILINE = 6 +TYPE_BUILD = 7 +TYPE_BUILD_V2 = 8 + def metafieldtype(name): if name in ['Description', 'Maintainer Notes']: - return 'multiline' + return TYPE_MULTILINE if name in ['Categories', 'AntiFeatures']: - return 'list' + return TYPE_LIST if name == 'Build Version': - return 'build' + return TYPE_BUILD if name == 'Build': - return 'buildv2' + return TYPE_BUILD_V2 if name == 'Use Built': - return 'obsolete' + return TYPE_OBSOLETE if name in app_fields: - return 'string' - return 'unknown' + return TYPE_STRING + return TYPE_UNKNOWN # In the order in which they are laid out on files @@ -342,12 +352,12 @@ bool_flags = set(['submodules', 'oldsdkloc', 'forceversion', 'forcevercode', def flagtype(name): if name in list_flags: - return 'list' + return TYPE_LIST if name in script_flags: - return 'script' + return TYPE_SCRIPT if name in bool_flags: - return 'bool' - return 'string' + return TYPE_BOOL + return TYPE_STRING # Designates a metadata field type and checks that it matches @@ -822,13 +832,13 @@ def post_metadata_parse(app): continue ftype = flagtype(k) - if ftype == 'script': + if ftype == TYPE_SCRIPT: build.__dict__[k] = re.sub(esc_newlines, '', v).lstrip().rstrip() - elif ftype == 'bool': + elif ftype == TYPE_BOOL: # TODO handle this using 0: cmds[-1] = cmds[-1][:-len('&& \\')] @@ -1340,8 +1350,8 @@ def write_yaml_metadata(mf, app): mf.write("builds:\n") first_build = False - w_field('versionName', build.version, ' - ', 'string') - w_field('versionCode', build.vercode, ' ', 'strsng') + w_field('versionName', build.version, ' - ', TYPE_STRING) + w_field('versionCode', build.vercode, ' ', TYPE_STRING) for f in build_flags_order: v = build.get_flag(f) if not v: -- 2.30.2