Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(521)

Unified Diff: git_cl.py

Issue 8360007: Move code starting the editor into a common function. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Rebase against HEAD Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gclient_utils.py ('k') | tests/gcl_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: git_cl.py
diff --git a/git_cl.py b/git_cl.py
index 9566118c596a8f48457ab215c7bbfa0386110c2f..1300267a7e79a0c78a2d8c3b45a4c96e40310fb1 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -12,7 +12,6 @@ import optparse
import os
import re
import sys
-import tempfile
import textwrap
import urlparse
import urllib2
@@ -36,6 +35,7 @@ except ImportError:
from third_party import upload
import breakpad # pylint: disable=W0611
import fix_encoding
+import gclient_utils
import presubmit_support
import rietveld
import scm
@@ -648,7 +648,13 @@ class ChangeDescription(object):
initial_text += '\nBUG='
if 'TEST=' not in self.description:
initial_text += '\nTEST='
- self._ParseDescription(UserEditedLog(initial_text))
+ content = gclient_utils.RunEditor(initial_text, True)
+ if not content:
+ DieWithError('Running editor failed')
+ content = re.compile(r'^#.*$', re.MULTILINE).sub('', content).strip()
+ if not content:
+ DieWithError('No CL description, aborting')
+ self._ParseDescription(content)
def _ParseDescription(self, description):
if not description:
@@ -824,39 +830,6 @@ def CreateDescriptionFromLog(args):
return RunGit(['log', '--pretty=format:%s\n\n%b'] + log_args)
-def UserEditedLog(starting_text):
- """Given some starting text, let the user edit it and return the result."""
- editor = os.getenv('EDITOR', 'vi')
-
- (file_handle, filename) = tempfile.mkstemp()
- fileobj = os.fdopen(file_handle, 'w')
- fileobj.write(starting_text)
- fileobj.close()
-
- # Open up the default editor in the system to get the CL description.
- try:
- cmd = '%s %s' % (editor, filename)
- if sys.platform == 'win32' and os.environ.get('TERM') == 'msys':
- # Msysgit requires the usage of 'env' to be present.
- cmd = 'env ' + cmd
- # shell=True to allow the shell to handle all forms of quotes in $EDITOR.
- try:
- subprocess2.check_call(cmd, shell=True)
- except subprocess2.CalledProcessError, e:
- DieWithError('Editor returned %d' % e.returncode)
- fileobj = open(filename)
- text = fileobj.read()
- fileobj.close()
- finally:
- os.remove(filename)
-
- if not text:
- return
-
- stripcomment_re = re.compile(r'^#.*$', re.MULTILINE)
- return stripcomment_re.sub('', text).strip()
-
-
def ConvertToInteger(inputval):
"""Convert a string to integer, but returns either an int or None."""
try:
« no previous file with comments | « gclient_utils.py ('k') | tests/gcl_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698