From 0d005ab83ae6e9c021b66e2880f8a57207af30fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20P=C3=B6hn?= Date: Wed, 8 Aug 2018 01:26:46 +0200 Subject: [PATCH] make parse_yaml_metadata ignore empty input --- fdroidserver/metadata.py | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index a4c6bf00..56931fbe 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -1075,25 +1075,24 @@ def parse_json_metadata(mf, app): def parse_yaml_metadata(mf, app): yamldata = yaml.load(mf, Loader=YamlLoader) - for field in yamldata: - if field not in yaml_app_fields: - warn_or_exception(_('Unrecognised app field: {fieldname}') - .format(fieldname=field)) - if not yamldata.get('Builds', None): - warn_or_exception(_('Missing app field: {fieldname}') - .format(fieldname='Builds')) - for build in yamldata.get('Builds', []): - # put all build flag keywords into a set to avoid - # excessive looping action - build_flag_set = set() - for build_flag in build.keys(): - build_flag_set.add(build_flag) - for build_flag in build_flag_set: - if build_flag not in build_flags: - warn_or_exception(_('Unrecognised build flag: {build_flag}') - .format(build_flag=build_flag)) - if yamldata: + for field in yamldata: + if field not in yaml_app_fields: + warn_or_exception(_('Unrecognised app field: {fieldname}') + .format(fieldname=field)) + if not yamldata.get('Builds', None): + warn_or_exception(_('Missing app field: {fieldname}') + .format(fieldname='Builds')) + for build in yamldata.get('Builds', []): + # put all build flag keywords into a set to avoid + # excessive looping action + build_flag_set = set() + for build_flag in build.keys(): + build_flag_set.add(build_flag) + for build_flag in build_flag_set: + if build_flag not in build_flags: + warn_or_exception(_('Unrecognised build flag: {build_flag}') + .format(build_flag=build_flag)) app.update(yamldata) return app