113481Sgiacomo.travaglini@arm.com#!/usr/bin/env python 213481Sgiacomo.travaglini@arm.com# 313481Sgiacomo.travaglini@arm.com# Copyright 2009, Google Inc. 413481Sgiacomo.travaglini@arm.com# All rights reserved. 513481Sgiacomo.travaglini@arm.com# 613481Sgiacomo.travaglini@arm.com# Redistribution and use in source and binary forms, with or without 713481Sgiacomo.travaglini@arm.com# modification, are permitted provided that the following conditions are 813481Sgiacomo.travaglini@arm.com# met: 913481Sgiacomo.travaglini@arm.com# 1013481Sgiacomo.travaglini@arm.com# * Redistributions of source code must retain the above copyright 1113481Sgiacomo.travaglini@arm.com# notice, this list of conditions and the following disclaimer. 1213481Sgiacomo.travaglini@arm.com# * Redistributions in binary form must reproduce the above 1313481Sgiacomo.travaglini@arm.com# copyright notice, this list of conditions and the following disclaimer 1413481Sgiacomo.travaglini@arm.com# in the documentation and/or other materials provided with the 1513481Sgiacomo.travaglini@arm.com# distribution. 1613481Sgiacomo.travaglini@arm.com# * Neither the name of Google Inc. nor the names of its 1713481Sgiacomo.travaglini@arm.com# contributors may be used to endorse or promote products derived from 1813481Sgiacomo.travaglini@arm.com# this software without specific prior written permission. 1913481Sgiacomo.travaglini@arm.com# 2013481Sgiacomo.travaglini@arm.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2113481Sgiacomo.travaglini@arm.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2213481Sgiacomo.travaglini@arm.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2313481Sgiacomo.travaglini@arm.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2413481Sgiacomo.travaglini@arm.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2513481Sgiacomo.travaglini@arm.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2613481Sgiacomo.travaglini@arm.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2713481Sgiacomo.travaglini@arm.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2813481Sgiacomo.travaglini@arm.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2913481Sgiacomo.travaglini@arm.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3013481Sgiacomo.travaglini@arm.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3113481Sgiacomo.travaglini@arm.com 3213481Sgiacomo.travaglini@arm.com"""upload_gmock.py v0.1.0 -- uploads a Google Mock patch for review. 3313481Sgiacomo.travaglini@arm.com 3413481Sgiacomo.travaglini@arm.comThis simple wrapper passes all command line flags and 3513481Sgiacomo.travaglini@arm.com--cc=googlemock@googlegroups.com to upload.py. 3613481Sgiacomo.travaglini@arm.com 3713481Sgiacomo.travaglini@arm.comUSAGE: upload_gmock.py [options for upload.py] 3813481Sgiacomo.travaglini@arm.com""" 3913481Sgiacomo.travaglini@arm.com 4013481Sgiacomo.travaglini@arm.com__author__ = 'wan@google.com (Zhanyong Wan)' 4113481Sgiacomo.travaglini@arm.com 4213481Sgiacomo.travaglini@arm.comimport os 4313481Sgiacomo.travaglini@arm.comimport sys 4413481Sgiacomo.travaglini@arm.com 4513481Sgiacomo.travaglini@arm.comCC_FLAG = '--cc=' 4613481Sgiacomo.travaglini@arm.comGMOCK_GROUP = 'googlemock@googlegroups.com' 4713481Sgiacomo.travaglini@arm.com 4813481Sgiacomo.travaglini@arm.com 4913481Sgiacomo.travaglini@arm.comdef main(): 5013481Sgiacomo.travaglini@arm.com # Finds the path to upload.py, assuming it is in the same directory 5113481Sgiacomo.travaglini@arm.com # as this file. 5213481Sgiacomo.travaglini@arm.com my_dir = os.path.dirname(os.path.abspath(__file__)) 5313481Sgiacomo.travaglini@arm.com upload_py_path = os.path.join(my_dir, 'upload.py') 5413481Sgiacomo.travaglini@arm.com 5513481Sgiacomo.travaglini@arm.com # Adds Google Mock discussion group to the cc line if it's not there 5613481Sgiacomo.travaglini@arm.com # already. 5713481Sgiacomo.travaglini@arm.com upload_py_argv = [upload_py_path] 5813481Sgiacomo.travaglini@arm.com found_cc_flag = False 5913481Sgiacomo.travaglini@arm.com for arg in sys.argv[1:]: 6013481Sgiacomo.travaglini@arm.com if arg.startswith(CC_FLAG): 6113481Sgiacomo.travaglini@arm.com found_cc_flag = True 6213481Sgiacomo.travaglini@arm.com cc_line = arg[len(CC_FLAG):] 6313481Sgiacomo.travaglini@arm.com cc_list = [addr for addr in cc_line.split(',') if addr] 6413481Sgiacomo.travaglini@arm.com if GMOCK_GROUP not in cc_list: 6513481Sgiacomo.travaglini@arm.com cc_list.append(GMOCK_GROUP) 6613481Sgiacomo.travaglini@arm.com upload_py_argv.append(CC_FLAG + ','.join(cc_list)) 6713481Sgiacomo.travaglini@arm.com else: 6813481Sgiacomo.travaglini@arm.com upload_py_argv.append(arg) 6913481Sgiacomo.travaglini@arm.com 7013481Sgiacomo.travaglini@arm.com if not found_cc_flag: 7113481Sgiacomo.travaglini@arm.com upload_py_argv.append(CC_FLAG + GMOCK_GROUP) 7213481Sgiacomo.travaglini@arm.com 7313481Sgiacomo.travaglini@arm.com # Invokes upload.py with the modified command line flags. 7413481Sgiacomo.travaglini@arm.com os.execv(upload_py_path, upload_py_argv) 7513481Sgiacomo.travaglini@arm.com 7613481Sgiacomo.travaglini@arm.com 7713481Sgiacomo.travaglini@arm.comif __name__ == '__main__': 7813481Sgiacomo.travaglini@arm.com main() 79