mirror of
https://github.com/encounter/engine.git
synced 2026-03-30 11:09:55 -07:00
43b83b1c9a
This will let us delete webkit-patch and a bunch of python code and it will save me some annoyance at needing to type "webkit-patch pretty-diff" all the time. R=abarth@chromium.org Review URL: https://codereview.chromium.org/944193003
97 lines
3.5 KiB
Python
Executable File
97 lines
3.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright (c) 2011 Code Aurora Forum. All rights reserved.
|
|
# Copyright (c) 2010 Google Inc. All rights reserved.
|
|
# Copyright (c) 2009 Apple Inc. All rights reserved.
|
|
# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are
|
|
# met:
|
|
#
|
|
# * Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# * Redistributions in binary form must reproduce the above
|
|
# copyright notice, this list of conditions and the following disclaimer
|
|
# in the documentation and/or other materials provided with the
|
|
# distribution.
|
|
# * Neither the name of Google Inc. nor the names of its
|
|
# contributors may be used to endorse or promote products derived from
|
|
# this software without specific prior written permission.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
# A tool for automating dealing with bugzilla, posting patches, committing patches, etc.
|
|
|
|
import time
|
|
import urllib
|
|
import webbrowser
|
|
|
|
from webkitpy.common.prettypatch import PrettyPatch
|
|
from webkitpy.common.system import logutils
|
|
from webkitpy.common.system.executive import Executive
|
|
from webkitpy.common.system.executive import ScriptError
|
|
from webkitpy.common.system.filesystem import FileSystem
|
|
from webkitpy.common.checkout.scm.detection import detect_scm_system
|
|
|
|
|
|
_log = logutils.get_logger(__file__)
|
|
|
|
|
|
def can_open_url():
|
|
try:
|
|
webbrowser.get()
|
|
return True
|
|
except webbrowser.Error, e:
|
|
return False
|
|
|
|
def open_url(url):
|
|
if not can_open_url():
|
|
_log.warn("Failed to open %s" % url)
|
|
webbrowser.open(url)
|
|
|
|
def show_pretty_diff():
|
|
if not can_open_url():
|
|
return None
|
|
|
|
try:
|
|
pretty_patch = PrettyPatch(Executive())
|
|
pretty_diff_file = pretty_patch.pretty_diff_file(diff())
|
|
url = "file://%s" % urllib.quote(pretty_diff_file.name)
|
|
open_url(url)
|
|
# We return the pretty_diff_file here because we need to keep the
|
|
# file alive until the user has had a chance to confirm the diff.
|
|
return pretty_diff_file
|
|
except ScriptError, e:
|
|
_log.warning("PrettyPatch failed. :(")
|
|
except OSError, e:
|
|
_log.warning("PrettyPatch unavailable.")
|
|
|
|
def diff():
|
|
scm = detect_scm_system(FileSystem().getcwd())
|
|
changed_files = scm.changed_files()
|
|
return scm.create_patch(None, changed_files=changed_files)
|
|
|
|
def main():
|
|
pretty_diff_file = show_pretty_diff()
|
|
# This is a terrible hack. Try to give enough time for the
|
|
# browser to actually load the file.
|
|
time.sleep(1)
|
|
if pretty_diff_file:
|
|
pretty_diff_file.close()
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main()
|
|
except KeyboardInterrupt:
|
|
sys.exit(signal.SIGINT + 128)
|