Index: gcl.py |
diff --git a/gcl.py b/gcl.py |
index ee94091f0a0fb7cf2ec6769db857f6194a83c74b..2ea3b40131343384df1cdda5d45daf015363e0d2 100755 |
--- a/gcl.py |
+++ b/gcl.py |
@@ -245,6 +245,17 @@ def WriteFile(filename, contents): |
file.close() |
+def FilterFlag(args, flag): |
+ """Returns True if the flag is present in args list. |
+ |
+ The flag is removed from args if present. |
+ """ |
+ if flag in args: |
+ args.remove(flag) |
+ return True |
+ return False |
+ |
+ |
class ChangeInfo(object): |
"""Holds information about a changelist. |
@@ -713,36 +724,27 @@ def GenerateDiff(files, root=None): |
return "".join(diff) |
+ |
+def OptionallyDoPresubmitChecks(change_info, committing, args): |
+ if FilterFlag(args, "--no_presubmit") or FilterFlag(args, "--force"): |
+ return True |
+ return DoPresubmitChecks(change_info, committing=committing) |
+ |
+ |
def UploadCL(change_info, args): |
if not change_info.FileList(): |
print "Nothing to upload, changelist is empty." |
return |
- |
- if not "--no_presubmit" in args: |
- if not DoPresubmitChecks(change_info, committing=False): |
- return |
- else: |
- args.remove("--no_presubmit") |
- |
- no_try = "--no_try" in args |
- if no_try: |
- args.remove("--no_try") |
- else: |
- # Support --no-try as --no_try |
- no_try = "--no-try" in args |
- if no_try: |
- args.remove("--no-try") |
+ if not OptionallyDoPresubmitChecks(change_info, False, args): |
+ return |
+ no_try = FilterFlag(args, "--no_try") or FilterFlag(args, "--no-try") |
# Map --send-mail to --send_mail |
- if "--send-mail" in args: |
- args.remove("--send-mail") |
+ if FilterFlag(args, "--send-mail"): |
args.append("--send_mail") |
# Supports --clobber for the try server. |
- clobber = False |
- if "--clobber" in args: |
- args.remove("--clobber") |
- clobber = True |
+ clobber = FilterFlag(args, "--clobber") |
# Disable try when the server is overridden. |
server_1 = re.compile(r"^-s\b.*") |
@@ -866,12 +868,8 @@ def Commit(change_info, args): |
if not change_info.FileList(): |
print "Nothing to commit, changelist is empty." |
return |
- |
- if not "--no_presubmit" in args: |
- if not DoPresubmitChecks(change_info, committing=True): |
- return |
- else: |
- args.remove("--no_presubmit") |
+ if not OptionallyDoPresubmitChecks(change_info, True, args): |
+ return |
# We face a problem with svn here: Let's say change 'bleh' modifies |
# svn:ignore on dir1\. but another unrelated change 'pouet' modifies |