| Index: tools/push-to-trunk/common_includes.py
|
| diff --git a/tools/push-to-trunk/common_includes.py b/tools/push-to-trunk/common_includes.py
|
| index 9ab2b143adc31210061a3cfa4c23025ae778dddb..9547367225d5ce3b7f7384094069a35e317d8f6c 100644
|
| --- a/tools/push-to-trunk/common_includes.py
|
| +++ b/tools/push-to-trunk/common_includes.py
|
| @@ -166,6 +166,7 @@ class Step(object):
|
| def __init__(self, text="", requires=None):
|
| self._text = text
|
| self._number = -1
|
| + self._options = None
|
| self._requires = requires
|
| self._side_effect_handler = DEFAULT_SIDE_EFFECT_HANDLER
|
|
|
| @@ -202,8 +203,13 @@ class Step(object):
|
| def RunStep(self):
|
| raise NotImplementedError
|
|
|
| - def ReadLine(self):
|
| - return self._side_effect_handler.ReadLine()
|
| + def ReadLine(self, default=None):
|
| + # Don't prompt in forced mode.
|
| + if self._options and self._options.f and default is not None:
|
| + print "%s (forced)" % default
|
| + return default
|
| + else:
|
| + return self._side_effect_handler.ReadLine()
|
|
|
| def Git(self, args="", prefix="", pipe=True):
|
| return self._side_effect_handler.Command("git", args, prefix, pipe)
|
| @@ -218,9 +224,14 @@ class Step(object):
|
| print "Exiting"
|
| raise Exception(msg)
|
|
|
| + def DieInForcedMode(self, msg=""):
|
| + if self._options and self._options.f:
|
| + msg = msg or "Not implemented in forced mode."
|
| + self.Die(msg)
|
| +
|
| def Confirm(self, msg):
|
| print "%s [Y/n] " % msg,
|
| - answer = self.ReadLine()
|
| + answer = self.ReadLine(default="Y")
|
| return answer == "" or answer == "Y" or answer == "y"
|
|
|
| def DeleteBranch(self, name):
|
| @@ -254,6 +265,8 @@ class Step(object):
|
| if not os.path.exists(self._config[DOT_GIT_LOCATION]):
|
| self.Die("This is not a git checkout, this script won't work for you.")
|
|
|
| + # TODO(machenbach): Don't use EDITOR in forced mode as soon as script is
|
| + # well tested.
|
| # Cancel if EDITOR is unset or not executable.
|
| if (not os.environ.get("EDITOR") or
|
| Command("which", os.environ["EDITOR"]) is None):
|
| @@ -325,6 +338,8 @@ class Step(object):
|
| answer = ""
|
| while answer != "LGTM":
|
| print "> ",
|
| + # TODO(machenbach): Add default="LGTM" to avoid prompt when script is
|
| + # well tested and when prepare push cl has TBR flag.
|
| answer = self.ReadLine()
|
| if answer != "LGTM":
|
| print "That was not 'LGTM'."
|
| @@ -333,6 +348,7 @@ class Step(object):
|
| print("Applying the patch \"%s\" failed. Either type \"ABORT<Return>\", "
|
| "or resolve the conflicts, stage *all* touched files with "
|
| "'git add', and type \"RESOLVED<Return>\"")
|
| + self.DieInForcedMode()
|
| answer = ""
|
| while answer != "RESOLVED":
|
| if answer == "ABORT":
|
| @@ -354,8 +370,13 @@ class UploadStep(Step):
|
| Step.__init__(self, "Upload for code review.")
|
|
|
| def RunStep(self):
|
| - print "Please enter the email address of a V8 reviewer for your patch: ",
|
| - reviewer = self.ReadLine()
|
| + if self._options and self._options.r:
|
| + print "Using account %s for review." % self._options.r
|
| + reviewer = self._options.r
|
| + else:
|
| + print "Please enter the email address of a V8 reviewer for your patch: ",
|
| + self.DieInForcedMode("A reviewer must be specified in forced mode.")
|
| + reviewer = self.ReadLine()
|
| args = "cl upload -r \"%s\" --send-mail" % reviewer
|
| if self.Git(args,pipe=False) is None:
|
| self.Die("'git cl upload' failed, please try again.")
|
|
|