Fix some minor issues that were reported by pyflakes and pylint. - Rename arguments to prevent redefinition of built-in 'dir' - Rename method call to prevent redefinition of built-in 'help' - Remove unused imports - Prefix unused variable with underscore to prevent warning Change-Id: Ia9e21c0f1a69af43f6e4566be46c31bdda540d2f
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
 | 
						|
from __future__ import print_function
 | 
						|
 | 
						|
import subprocess
 | 
						|
import getopt
 | 
						|
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)
 | 
						|
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
 | 
						|
    branch = None
 | 
						|
    commit = None
 | 
						|
    patchset = None
 | 
						|
 | 
						|
    try:
 | 
						|
        opts, _args = getopt.getopt(sys.argv[1:], '', \
 | 
						|
            ['change=', 'project=', 'branch=', 'commit=', 'patchset='])
 | 
						|
    except getopt.GetoptError as err:
 | 
						|
        print('Error: %s' % (err))
 | 
						|
        usage()
 | 
						|
        sys.exit(-1)
 | 
						|
 | 
						|
    for arg, value in opts:
 | 
						|
        if arg == '--change':
 | 
						|
            change = value
 | 
						|
        elif arg == '--project':
 | 
						|
            project = value
 | 
						|
        elif arg == '--branch':
 | 
						|
            branch = value
 | 
						|
        elif arg == '--commit':
 | 
						|
            commit = value
 | 
						|
        elif arg == '--patchset':
 | 
						|
            patchset = value
 | 
						|
        else:
 | 
						|
            print('Error: option %s not recognized' % (arg))
 | 
						|
            usage()
 | 
						|
            sys.exit(-1)
 | 
						|
 | 
						|
    if change == None or project == None or branch == None \
 | 
						|
        or commit == None or patchset == None:
 | 
						|
        usage()
 | 
						|
        sys.exit(-1)
 | 
						|
 | 
						|
    command = 'git cat-file commit %s' % (commit)
 | 
						|
    status, output = subprocess.getstatusoutput(command)
 | 
						|
 | 
						|
    if status != 0:
 | 
						|
        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.')
 | 
						|
 | 
						|
    i = 0
 | 
						|
    for line in commitLines:
 | 
						|
        i = i + 1
 | 
						|
        if len(line) > 80:
 | 
						|
            fail(commit, 'Line %d is over 80 characters.' % i)
 | 
						|
 | 
						|
    passes(commit)
 | 
						|
 | 
						|
def usage():
 | 
						|
    print('Usage:\n')
 | 
						|
    print(sys.argv[0] + ' --change <change id> --project <project name> ' \
 | 
						|
        + '--branch <branch> --commit <sha1> --patchset <patchset id>')
 | 
						|
 | 
						|
def fail( commit, message ):
 | 
						|
    command = SSH_COMMAND + FAILURE_SCORE + ' -m \\\"' \
 | 
						|
        + _shell_escape( FAILURE_MESSAGE + '\n\n' + message) \
 | 
						|
        + '\\\" ' + commit
 | 
						|
    subprocess.getstatusoutput(command)
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
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:
 | 
						|
        if c in '\n':
 | 
						|
            s = s + '\\\"$\'\\n\'\\\"'
 | 
						|
        else:
 | 
						|
            s = s + c
 | 
						|
    return s
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main()
 | 
						|
 |