|
|
|
@ -22,25 +22,22 @@ import yaml |
|
|
|
|
|
|
|
|
|
TEST = (os.environ.get('TEST', 'false') == 'true') |
|
|
|
|
|
|
|
|
|
_TOP_LEVEL_KEYS = ['settings', 'proto_deps', 'filegroups', 'libs', 'targets', 'vspackages'] |
|
|
|
|
_TOP_LEVEL_KEYS = [ |
|
|
|
|
'settings', 'proto_deps', 'filegroups', 'libs', 'targets', 'vspackages' |
|
|
|
|
] |
|
|
|
|
_ELEM_KEYS = [ |
|
|
|
|
'name', |
|
|
|
|
'gtest', |
|
|
|
|
'cpu_cost', |
|
|
|
|
'flaky', |
|
|
|
|
'build', |
|
|
|
|
'run', |
|
|
|
|
'language', |
|
|
|
|
'public_headers', |
|
|
|
|
'headers', |
|
|
|
|
'src', |
|
|
|
|
'deps'] |
|
|
|
|
'name', 'gtest', 'cpu_cost', 'flaky', 'build', 'run', 'language', |
|
|
|
|
'public_headers', 'headers', 'src', 'deps' |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def repr_ordered_dict(dumper, odict): |
|
|
|
|
return dumper.represent_mapping(u'tag:yaml.org,2002:map', odict.items()) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yaml.add_representer(collections.OrderedDict, repr_ordered_dict) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def rebuild_as_ordered_dict(indict, special_keys): |
|
|
|
|
outdict = collections.OrderedDict() |
|
|
|
|
for key in sorted(indict.keys()): |
|
|
|
@ -55,6 +52,7 @@ def rebuild_as_ordered_dict(indict, special_keys): |
|
|
|
|
outdict[key] = indict[key] |
|
|
|
|
return outdict |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def clean_elem(indict): |
|
|
|
|
for name in ['public_headers', 'headers', 'src']: |
|
|
|
|
if name not in indict: continue |
|
|
|
@ -64,13 +62,15 @@ def clean_elem(indict): |
|
|
|
|
indict[name] = protos + sorted(others) |
|
|
|
|
return rebuild_as_ordered_dict(indict, _ELEM_KEYS) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for filename in sys.argv[1:]: |
|
|
|
|
with open(filename) as f: |
|
|
|
|
js = yaml.load(f) |
|
|
|
|
js = rebuild_as_ordered_dict(js, _TOP_LEVEL_KEYS) |
|
|
|
|
for grp in ['filegroups', 'libs', 'targets']: |
|
|
|
|
if grp not in js: continue |
|
|
|
|
js[grp] = sorted([clean_elem(x) for x in js[grp]], |
|
|
|
|
js[grp] = sorted( |
|
|
|
|
[clean_elem(x) for x in js[grp]], |
|
|
|
|
key=lambda x: (x.get('language', '_'), x['name'])) |
|
|
|
|
output = yaml.dump(js, indent=2, width=80, default_flow_style=False) |
|
|
|
|
# massage out trailing whitespace |
|
|
|
|