@ -38,7 +38,7 @@ from scm import SVN
import subprocess2
import subprocess2
from third_party import upload
from third_party import upload
__version__ = ' 1.2. 2 '
__version__ = ' 1.2. 1 '
CODEREVIEW_SETTINGS = {
CODEREVIEW_SETTINGS = {
@ -69,7 +69,6 @@ DEFAULT_LINT_IGNORE_REGEX = r"$^"
REVIEWERS_REGEX = r ' \ s*R=(.+) '
REVIEWERS_REGEX = r ' \ s*R=(.+) '
def CheckHomeForFile ( filename ) :
def CheckHomeForFile ( filename ) :
""" Checks the users home dir for the existence of the given file. Returns
""" Checks the users home dir for the existence of the given file. Returns
the path to the file if it ' s there, or None if it is not.
the path to the file if it ' s there, or None if it is not.
@ -228,6 +227,33 @@ def ErrorExit(msg):
sys . exit ( 1 )
sys . exit ( 1 )
def RunShellWithReturnCode ( command , print_output = False ) :
""" Executes a command and returns the output and the return code. """
p = subprocess2 . Popen (
command , stdout = subprocess2 . PIPE ,
stderr = subprocess2 . STDOUT , universal_newlines = True )
if print_output :
output_array = [ ]
while True :
line = p . stdout . readline ( )
if not line :
break
if print_output :
print line . strip ( ' \n ' )
output_array . append ( line )
output = " " . join ( output_array )
else :
output = p . stdout . read ( )
p . wait ( )
p . stdout . close ( )
return output , p . returncode
def RunShell ( command , print_output = False ) :
""" Executes a command and returns the output. """
return RunShellWithReturnCode ( command , print_output ) [ 0 ]
def FilterFlag ( args , flag ) :
def FilterFlag ( args , flag ) :
""" Returns True if the flag is present in args list.
""" Returns True if the flag is present in args list.
@ -988,25 +1014,19 @@ def CMDcommit(change_info, args):
handle , commit_filename = tempfile . mkstemp ( text = True )
handle , commit_filename = tempfile . mkstemp ( text = True )
os . write ( handle , commit_message )
os . write ( handle , commit_message )
os . close ( handle )
os . close ( handle )
try :
handle , targets_filename = tempfile . mkstemp ( text = True )
handle , targets_filename = tempfile . mkstemp ( text = True )
os . write ( handle , " \n " . join ( change_info . GetFileNames ( ) ) )
os . write ( handle , " \n " . join ( change_info . GetFileNames ( ) ) )
os . close ( handle )
os . close ( handle )
try :
commit_cmd + = [ ' --file= ' + commit_filename ]
commit_cmd + = [ ' --file= ' + commit_filename ]
commit_cmd + = [ ' --targets= ' + targets_filename ]
commit_cmd + = [ ' --targets= ' + targets_filename ]
# Change the current working directory before calling commit.
# Change the current working directory before calling commit.
previous_cwd = os . getcwd ( )
previous_cwd = os . getcwd ( )
os . chdir ( change_info . GetLocalRoot ( ) )
os . chdir ( change_info . GetLocalRoot ( ) )
output = ' '
output = RunShell ( commit_cmd , True )
try :
os . remove ( commit_filename )
output = subprocess2 . check_output ( commit_cmd )
os . remove ( targets_filename )
except subprocess2 . CalledProcessError , e :
ErrorExit ( ' Commit failed. \n %s ' % e )
finally :
os . remove ( commit_filename )
finally :
os . remove ( targets_filename )
if output . find ( " Committed revision " ) != - 1 :
if output . find ( " Committed revision " ) != - 1 :
change_info . Delete ( )
change_info . Delete ( )
@ -1284,7 +1304,7 @@ def CMDdiff(args):
cmd = [ ' svn ' , ' diff ' ]
cmd = [ ' svn ' , ' diff ' ]
cmd . extend ( [ os . path . join ( root , x ) for x in files ] )
cmd . extend ( [ os . path . join ( root , x ) for x in files ] )
cmd . extend ( args )
cmd . extend ( args )
return subprocess2. call ( cmd )
return RunShellWithReturnCode( cmd , print_output = True ) [ 1 ]
@no_args
@no_args
@ -1367,7 +1387,7 @@ def CMDpassthru(args):
root = GetRepositoryRoot ( )
root = GetRepositoryRoot ( )
change_info = ChangeInfo . Load ( args [ 1 ] , root , True , True )
change_info = ChangeInfo . Load ( args [ 1 ] , root , True , True )
args . extend ( [ os . path . join ( root , x ) for x in change_info . GetFileNames ( ) ] )
args . extend ( [ os . path . join ( root , x ) for x in change_info . GetFileNames ( ) ] )
return subprocess2. call ( args )
return RunShellWithReturnCode( args , print_output = True ) [ 1 ]
def Command ( name ) :
def Command ( name ) :