1#!/usr/bin/python3 2# all arguments to this script are considered as json files 3# and attempted to be formatted alphabetically 4 5import json 6import os 7from sys import argv 8 9files = argv[1:] 10 11for file in files[:]: 12 if os.path.isdir(file): 13 files.remove(file) 14 for f in os.listdir(file): 15 files.append(os.path.join(file, f)) 16 17for file in files: 18 if not file.endswith('.json'): 19 continue 20 print("formatting file {}".format(file)) 21 with open(file) as f: 22 j = json.load(f) 23 24 if isinstance(j, list): 25 for item in j: 26 item["Exposes"] = sorted(item["Exposes"], key=lambda k: k["Type"]) 27 else: 28 j["Exposes"] = sorted(j["Exposes"], key=lambda k: k["Type"]) 29 30 nl = [s['Name'] for s in j['Exposes']] 31 ns = set(nl) 32 for n in ns: 33 t = nl.count(n) 34 if t != 1: 35 print('\033[1;35mthe %s appears %d times\033[0m!'%(n, t)) 36 os._exit(-1) 37 38 with open(file, 'w') as f: 39 f.write(json.dumps(j, indent=4, sort_keys=True, separators=(',', ': '))) 40