17d0f6911STyker#!/usr/bin/env python3 2*b71edfaaSTobias Hieta""" 37d0f6911STykerMerge .stats files generated by llvm tools 47d0f6911STyker 57d0f6911STykermerge-stats.py takes as argument a list of stats files to merge 67d0f6911STykerand output the result on stdout 77d0f6911STyker 87d0f6911STykerUsage: 97d0f6911STyker merge-stats.py $(find ./builddir/ -name "*.stats") > total.stats 10*b71edfaaSTobias Hieta""" 117d0f6911STyker 127d0f6911STykerimport json 137d0f6911STykerimport sys 147d0f6911STyker 157d0f6911STykerresult = {} 167d0f6911STyker 177d0f6911STykerfor arg in range(1, len(sys.argv)): 18*b71edfaaSTobias Hieta with open(sys.argv[arg], "r", encoding="utf-8", errors="ignore") as f: 197d0f6911STyker text = f.read() 207d0f6911STyker try: 217d0f6911STyker data = json.loads(text) 227d0f6911STyker except: 23*b71edfaaSTobias Hieta print("ignored %s: failed to parse" % sys.argv[arg], file=sys.stderr) 247d0f6911STyker continue 257d0f6911STyker for key in data: 267d0f6911STyker if key in result: 277d0f6911STyker result[key] += data[key] 287d0f6911STyker else: 297d0f6911STyker result[key] = data[key] 307d0f6911STyker 317d0f6911STykerout = json.dumps(result, indent=2) 327d0f6911STykerprint(out) 33