diff options
Diffstat (limited to 'contrib/check-valid-commit.py')
-rwxr-xr-x | contrib/check-valid-commit.py | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/contrib/check-valid-commit.py b/contrib/check-valid-commit.py index d26fa58c28..763ae3e062 100755 --- a/contrib/check-valid-commit.py +++ b/contrib/check-valid-commit.py @@ -10,13 +10,16 @@ import sys SSH_USER = 'bot' SSH_HOST = 'localhost' SSH_PORT = 29418 -SSH_COMMAND = 'ssh %s@%s -p %d gerrit approve ' % (SSH_USER, SSH_HOST, SSH_PORT) +SSH_COMMAND = 'ssh %s@%s -p %d gerrit approve ' % (SSH_USER, + SSH_HOST, + SSH_PORT) FAILURE_SCORE = '--code-review=-2' FAILURE_MESSAGE = 'This commit message does not match the standard.' \ + ' Please correct the commit message and upload a replacement patch.' PASS_SCORE = '--code-review=0' PASS_MESSAGE = '' + def main(): change = None project = None @@ -25,8 +28,9 @@ def main(): patchset = None try: - opts, _args = getopt.getopt(sys.argv[1:], '', \ - ['change=', 'project=', 'branch=', 'commit=', 'patchset=']) + opts, _args = getopt.getopt(sys.argv[1:], '', + ['change=', 'project=', 'branch=', + 'commit=', 'patchset=']) except getopt.GetoptError as err: print('Error: %s' % (err)) usage() @@ -48,8 +52,7 @@ def main(): usage() sys.exit(-1) - if change == None or project == None or branch == None \ - or commit == None or patchset == None: + if any(p is None for p in [change, project, branch, commit, patchset]): usage() sys.exit(-1) @@ -57,16 +60,16 @@ def main(): status, output = subprocess.getstatusoutput(command) if status != 0: - print('Error running \'%s\'. status: %s, output:\n\n%s' % \ - (command, status, output)) + print('Error running \'%s\'. status: %s, output:\n\n%s' % + (command, status, output)) sys.exit(-1) commitMessage = output[(output.find('\n\n')+2):] commitLines = commitMessage.split('\n') if len(commitLines) > 1 and len(commitLines[1]) != 0: - fail(commit, 'Invalid commit summary. The summary must be ' \ - + 'one line followed by a blank line.') + fail(commit, 'Invalid commit summary. The summary must be ' + + 'one line followed by a blank line.') i = 0 for line in commitLines: @@ -76,23 +79,27 @@ def main(): passes(commit) + def usage(): print('Usage:\n') - print(sys.argv[0] + ' --change <change id> --project <project name> ' \ - + '--branch <branch> --commit <sha1> --patchset <patchset id>') + print(sys.argv[0] + ' --change <change id> --project <project name> ' + + '--branch <branch> --commit <sha1> --patchset <patchset id>') -def fail( commit, message ): + +def fail(commit, message): command = SSH_COMMAND + FAILURE_SCORE + ' -m \\\"' \ - + _shell_escape( FAILURE_MESSAGE + '\n\n' + message) \ + + _shell_escape(FAILURE_MESSAGE + '\n\n' + message) \ + '\\\" ' + commit subprocess.getstatusoutput(command) sys.exit(1) -def passes( commit ): + +def passes(commit): command = SSH_COMMAND + PASS_SCORE + ' -m \\\"' \ + _shell_escape(PASS_MESSAGE) + ' \\\" ' + commit subprocess.getstatusoutput(command) + def _shell_escape(x): s = '' for c in x: @@ -102,6 +109,6 @@ def _shell_escape(x): s = s + c return s + if __name__ == '__main__': main() - |