1231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#!/usr/bin/env python 2e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block# Copyright (c) 2010 Google Inc. All rights reserved. 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# Copyright (c) 2009 Apple Inc. All rights reserved. 4dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org) 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# Redistribution and use in source and binary forms, with or without 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# modification, are permitted provided that the following conditions are 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# met: 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# * Redistributions of source code must retain the above copyright 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# notice, this list of conditions and the following disclaimer. 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# * Redistributions in binary form must reproduce the above 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# copyright notice, this list of conditions and the following disclaimer 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# in the documentation and/or other materials provided with the 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# distribution. 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# * Neither the name of Google Inc. nor the names of its 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# contributors may be used to endorse or promote products derived from 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# this software without specific prior written permission. 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# A tool for automating dealing with bugzilla, posting patches, committing patches, etc. 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34e78cbe89e6f337f2f1fe40315be88f742b547151Steve Blockimport logging 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochimport os 362fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockimport signal 37dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockimport sys 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockfrom webkitpy.common.system.logutils import configure_logging 40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockimport webkitpy.python24.versioning as versioning 41d0825bca7fe65beaee391d30da42e937db621564Steve Block 42f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick_log = logging.getLogger("webkit-patch") 43d0825bca7fe65beaee391d30da42e937db621564Steve Block 44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockdef main(): 45e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block # This is a hack to let us enable DEBUG logging as early as possible. 46e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block # Note this can't be ternary as versioning.check_version() 47e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block # hasn't run yet and this python might be older than 2.5. 48e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block if set(["-v", "--verbose"]).intersection(set(sys.argv)): 49e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block logging_level = logging.DEBUG 50e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block else: 51e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block logging_level = logging.INFO 52e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block configure_logging(logging_level=logging_level) 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block versioning.check_version() 55f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 56f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick if sys.platform == "win32": 57f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick _log.fatal("webkit-patch is only supported under Cygwin Python, " 58f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick "not Win32 Python") 59f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick sys.exit(1) 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block # Import webkit-patch code only after version-checking so that 62dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block # script doesn't error out before having a chance to report the 63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block # version warning. 64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block from webkitpy.tool.main import WebKitPatch 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebKitPatch(__file__).main() 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochif __name__ == "__main__": 702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block try: 712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block main() 722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block except KeyboardInterrupt: 732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block sys.exit(signal.SIGINT + 128) 74