mirror of https://github.com/grpc/grpc.git
parent
b287d7cb9b
commit
0b2a372f61
2 changed files with 544 additions and 489 deletions
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,56 @@ |
||||
#!/usr/bin/python |
||||
# produces cleaner build.json files |
||||
|
||||
import collections |
||||
import json |
||||
import os |
||||
import sys |
||||
|
||||
_TOP_LEVEL_KEYS = ['settings', 'filegroups', 'libs', 'targets'] |
||||
_VERSION_KEYS = ['major', 'minor', 'micro', 'build'] |
||||
_ELEM_KEYS = [ |
||||
'name', |
||||
'build', |
||||
'language', |
||||
'public_headers', |
||||
'headers', |
||||
'src', |
||||
'deps'] |
||||
|
||||
def rebuild_as_ordered_dict(indict, special_keys): |
||||
outdict = collections.OrderedDict() |
||||
for key in special_keys: |
||||
if key in indict: |
||||
outdict[key] = indict[key] |
||||
for key in sorted(indict.keys()): |
||||
if key in special_keys: continue |
||||
outdict[key] = indict[key] |
||||
return outdict |
||||
|
||||
def clean_elem(indict): |
||||
for name in ['public_headers', 'headers', 'src']: |
||||
if name not in indict: continue |
||||
inlist = indict[name] |
||||
protos = set(x for x in inlist if os.path.splitext(x)[1] == '.proto') |
||||
others = set(x for x in inlist if x not in protos) |
||||
indict[name] = sorted(protos) + sorted(others) |
||||
return rebuild_as_ordered_dict(indict, _ELEM_KEYS) |
||||
|
||||
for filename in sys.argv[1:]: |
||||
with open(filename) as f: |
||||
js = json.load(f) |
||||
js = rebuild_as_ordered_dict(js, _TOP_LEVEL_KEYS) |
||||
js['settings']['version'] = rebuild_as_ordered_dict( |
||||
js['settings']['version'], _VERSION_KEYS) |
||||
for grp in ['filegroups', 'libs', 'targets']: |
||||
if grp not in js: continue |
||||
js[grp] = sorted([clean_elem(x) for x in js[grp]], |
||||
key=lambda x: x['name']) |
||||
output = json.dumps(js, indent = 2) |
||||
# massage out trailing whitespace |
||||
lines = [] |
||||
for line in output.splitlines(): |
||||
lines.append(line.rstrip() + '\n') |
||||
with open(filename, 'w') as f: |
||||
f.write(''.join(lines)) |
||||
|
Loading…
Reference in new issue