From: Hans-Christoph Steiner Date: Sun, 2 Apr 2017 19:58:34 +0000 (+0200) Subject: support pretty output in JSON and for binary transparency logs X-Git-Tag: 0.8~83^2~4 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=6f71465ec1008e55b287fa9f9a9ad56215a6795e;p=fdroidserver.git support pretty output in JSON and for binary transparency logs This makes make_index_v1() support `fdroid update --pretty`, then also uses pretty output for the binary transparency logs, so that the git history has nice, readable diffs between commits. --- diff --git a/fdroidserver/common.py b/fdroidserver/common.py index be902c47..cc4567dc 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -2364,6 +2364,8 @@ def make_binary_transparency_log(repodirs, btrepo='binary_transparency', ''' import git + import xml.dom.minidom + if os.path.exists(os.path.join(btrepo, '.git')): gitrepo = git.Repo(btrepo) else: @@ -2394,7 +2396,16 @@ def make_binary_transparency_log(repodirs, btrepo='binary_transparency', if not os.path.exists(repof): continue dest = os.path.join(cpdir, f) - shutil.copyfile(repof, dest) + if f.endswith('.xml'): + doc = xml.dom.minidom.parse(repof) + output = doc.toprettyxml(encoding='utf-8') + with open(dest, 'wb') as f: + f.write(output) + elif f.endswith('.json'): + with open(repof) as fp: + output = json.load(fp, object_pairs_hook=collections.OrderedDict) + with open(dest, 'w') as fp: + json.dump(output, fp, indent=2) gitrepo.index.add([repof, ]) for f in ('index.jar', 'index-v1.jar'): repof = os.path.join(repodir, f) diff --git a/fdroidserver/index.py b/fdroidserver/index.py index b42c63d1..e029fc50 100644 --- a/fdroidserver/index.py +++ b/fdroidserver/index.py @@ -220,7 +220,10 @@ def make_v1(apps, packages, repodir, repodict, requestsdict): json_name = 'index-v1.json' index_file = os.path.join(repodir, json_name) with open(index_file, 'w') as fp: - json.dump(output, fp, default=_index_encoder_default) + if common.options.pretty: + json.dump(output, fp, default=_index_encoder_default, indent=2) + else: + json.dump(output, fp, default=_index_encoder_default) if common.options.nosign: logging.debug('index-v1 must have a signature, use `fdroid signindex` to create it!')