| Index: gclient_utils.py
|
| diff --git a/gclient_utils.py b/gclient_utils.py
|
| index 1981f36e70e07b26eb43052368d298b548915ea8..8709e08191473da7561567a7374e8428192a7fca 100644
|
| --- a/gclient_utils.py
|
| +++ b/gclient_utils.py
|
| @@ -11,6 +11,7 @@ import Queue
|
| import re
|
| import stat
|
| import sys
|
| +import tempfile
|
| import threading
|
| import time
|
|
|
| @@ -687,3 +688,46 @@ class ExecutionQueue(object):
|
| work_queue.ready_cond.notifyAll()
|
| finally:
|
| work_queue.ready_cond.release()
|
| +
|
| +
|
| +def GetEditor(git):
|
| + """Returns the most plausible editor to use."""
|
| + if git:
|
| + editor = os.environ.get('GIT_EDITOR')
|
| + else:
|
| + editor = os.environ.get('SVN_EDITOR')
|
| + if not editor:
|
| + editor = os.environ.get('EDITOR')
|
| + if not editor:
|
| + if sys.platform.startswith('win'):
|
| + editor = 'notepad'
|
| + else:
|
| + editor = 'vim'
|
| + return editor
|
| +
|
| +
|
| +def RunEditor(content, git):
|
| + """Opens up the default editor in the system to get the CL description."""
|
| + file_handle, filename = tempfile.mkstemp(text=True)
|
| + # Make sure CRLF is handled properly by requiring none.
|
| + if '\r' in content:
|
| + print >> sys.stderr, ('!! Please remove \\r from your content !!')
|
| + fileobj = os.fdopen(file_handle, 'w')
|
| + # Still remove \r if present.
|
| + fileobj.write(re.sub('\r?\n', '\n', content))
|
| + fileobj.close()
|
| +
|
| + try:
|
| + cmd = '%s %s' % (GetEditor(git), filename)
|
| + if sys.platform == 'win32' and os.environ.get('TERM') == 'msys':
|
| + # Msysgit requires the usage of 'env' to be present.
|
| + cmd = 'env ' + cmd
|
| + try:
|
| + # shell=True to allow the shell to handle all forms of quotes in
|
| + # $EDITOR.
|
| + subprocess2.check_call(cmd, shell=True)
|
| + except subprocess2.CalledProcessError:
|
| + return None
|
| + return FileRead(filename)
|
| + finally:
|
| + os.remove(filename)
|
|
|