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