|  | # | 
|  | # 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()) |