diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 17a3e739..33c2f5af 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -1584,15 +1584,11 @@ def write_metadata(metadatapath, app): warn_or_exception(_('Cannot write "{path}", not an accepted format, use: {formats}') .format(path=metadatapath, formats=', '.join(accepted))) - try: - with open(metadatapath, 'w') as mf: - if ext == 'txt': - return write_txt(mf, app) - elif ext == 'yml': - return write_yaml(mf, app) - except FDroidException as e: - os.remove(metadatapath) - raise e + with open(metadatapath, 'w') as mf: + if ext == 'txt': + return write_txt(mf, app) + elif ext == 'yml': + return write_yaml(mf, app) warn_or_exception(_('Unknown metadata format: %s') % metadatapath) diff --git a/fdroidserver/rewritemeta.py b/fdroidserver/rewritemeta.py index 07fb7492..0cc5c416 100644 --- a/fdroidserver/rewritemeta.py +++ b/fdroidserver/rewritemeta.py @@ -108,10 +108,14 @@ def main(): newbuilds.append(new) app.builds = newbuilds - metadata.write_metadata(base + '.' + to_ext, app) - - if ext != to_ext: - os.remove(path) + try: + metadata.write_metadata(base + '.' + to_ext, app) + # remove old format metadata if there was a format change + # and rewriting to the new format worked + if ext != to_ext: + os.remove(path) + finally: + pass logging.debug(_("Finished"))