1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#!/usr/bin/env python 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Copyright 2017 The Chromium Authors. All rights reserved. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Use of this source code is governed by a BSD-style license that can be 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# found in the LICENSE file. 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport argparse 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport json 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport shutil 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport sys 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef noop_merge(output_json, jsons_to_merge): 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot """Use the first supplied JSON as the output JSON. 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Primarily intended for unsharded tasks. 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Args: 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot output_json: A path to a JSON file to which the results should be written. 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot jsons_to_merge: A list of paths to JSON files. 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot """ 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if len(jsons_to_merge) > 1: 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot print >> sys.stderr, ( 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 'Multiple JSONs provided: %s' % ','.join(jsons_to_merge)) 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return 1 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if jsons_to_merge: 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot shutil.copyfile(jsons_to_merge[0], output_json) 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot else: 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with open(output_json, 'w') as f: 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot json.dump({}, f) 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return 0 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef main(raw_args): 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser = argparse.ArgumentParser() 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser.add_argument('--build-properties', help=argparse.SUPPRESS) 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser.add_argument('--summary-json', help=argparse.SUPPRESS) 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser.add_argument('-o', '--output-json', required=True) 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser.add_argument('jsons_to_merge', nargs='*') 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot args = parser.parse_args(raw_args) 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return noop_merge(args.output_json, args.jsons_to_merge) 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotif __name__ == '__main__': 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sys.exit(main(sys.argv[1:])) 47