| # | |
| # Copyright (c) 2016, Alliance for Open Media. All rights reserved | |
| # | |
| # This source code is subject to the terms of the BSD 2 Clause License and | |
| # the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License | |
| # was not distributed with this source code in the LICENSE file, you can | |
| # obtain it at www.aomedia.org/license/software. If the Alliance for Open | |
| # Media Patent License 1.0 was not distributed with this source code in the | |
| # PATENTS file, you can obtain it at www.aomedia.org/license/patent. | |
| # | |
| """Standalone script which parses a gtest log for json. | |
| Json is returned returns as an array. This script is used by the libaom | |
| waterfall to gather json results mixed in with gtest logs. This is | |
| dubious software engineering. | |
| """ | |
| import getopt | |
| import json | |
| import os | |
| import re | |
| import sys | |
| def main(): | |
| if len(sys.argv) != 3: | |
| print "Expects a file to write json to!" | |
| exit(1) | |
| try: | |
| opts, _ = \ | |
| getopt.getopt(sys.argv[1:], \ | |
| 'o:', ['output-json=']) | |
| except getopt.GetOptError: | |
| print 'scrape_gtest_log.py -o <output_json>' | |
| sys.exit(2) | |
| output_json = '' | |
| for opt, arg in opts: | |
| if opt in ('-o', '--output-json'): | |
| output_json = os.path.join(arg) | |
| blob = sys.stdin.read() | |
| json_string = '[' + ','.join('{' + x + '}' for x in | |
| re.findall(r'{([^}]*.?)}', blob)) + ']' | |
| print blob | |
| output = json.dumps(json.loads(json_string), indent=4, sort_keys=True) | |
| print output | |
| path = os.path.dirname(output_json) | |
| if path and not os.path.exists(path): | |
| os.makedirs(path) | |
| outfile = open(output_json, 'w') | |
| outfile.write(output) | |
| if __name__ == '__main__': | |
| sys.exit(main()) |