1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#!/usr/bin/env python 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# Copyright 2009, Google Inc. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# All rights reserved. 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# Redistribution and use in source and binary forms, with or without 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# modification, are permitted provided that the following conditions are 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# met: 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# * Redistributions of source code must retain the above copyright 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# notice, this list of conditions and the following disclaimer. 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# * Redistributions in binary form must reproduce the above 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# copyright notice, this list of conditions and the following disclaimer 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# in the documentation and/or other materials provided with the 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# distribution. 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# * Neither the name of Google Inc. nor the names of its 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# contributors may be used to endorse or promote products derived from 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# this software without specific prior written permission. 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch"""upload_gtest.py v0.1.0 -- uploads a Google Test patch for review. 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochThis simple wrapper passes all command line flags and 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch--cc=googletestframework@googlegroups.com to upload.py. 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochUSAGE: upload_gtest.py [options for upload.py] 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch""" 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch__author__ = 'wan@google.com (Zhanyong Wan)' 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochimport os 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochimport sys 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochCC_FLAG = '--cc=' 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochGTEST_GROUP = 'googletestframework@googlegroups.com' 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochdef main(): 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch # Finds the path to upload.py, assuming it is in the same directory 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch # as this file. 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch my_dir = os.path.dirname(os.path.abspath(__file__)) 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch upload_py_path = os.path.join(my_dir, 'upload.py') 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch # Adds Google Test discussion group to the cc line if it's not there 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch # already. 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch upload_py_argv = [upload_py_path] 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch found_cc_flag = False 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for arg in sys.argv[1:]: 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if arg.startswith(CC_FLAG): 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch found_cc_flag = True 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch cc_line = arg[len(CC_FLAG):] 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch cc_list = [addr for addr in cc_line.split(',') if addr] 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if GTEST_GROUP not in cc_list: 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch cc_list.append(GTEST_GROUP) 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch upload_py_argv.append(CC_FLAG + ','.join(cc_list)) 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch else: 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch upload_py_argv.append(arg) 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if not found_cc_flag: 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch upload_py_argv.append(CC_FLAG + GTEST_GROUP) 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch # Invokes upload.py with the modified command line flags. 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch os.execv(upload_py_path, upload_py_argv) 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochif __name__ == '__main__': 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch main() 79