@ -38,7 +38,7 @@ from scm import SVN
import subprocess2
from third_party import upload
__version__ = ' 1.2. 2 '
__version__ = ' 1.2. 1 '
CODEREVIEW_SETTINGS = {
@ -69,7 +69,6 @@ DEFAULT_LINT_IGNORE_REGEX = r"$^"
REVIEWERS_REGEX = r ' \ s*R=(.+) '
def CheckHomeForFile ( filename ) :
""" 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.
@ -228,6 +227,33 @@ def ErrorExit(msg):
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 ) :
""" 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 )
os . write ( handle , commit_message )
os . close ( handle )
try :
handle , targets_filename = tempfile . mkstemp ( text = True )
os . write ( handle , " \n " . join ( change_info . GetFileNames ( ) ) )
os . close ( handle )
try :
commit_cmd + = [ ' --file= ' + commit_filename ]
commit_cmd + = [ ' --targets= ' + targets_filename ]
# Change the current working directory before calling commit.
previous_cwd = os . getcwd ( )
os . chdir ( change_info . GetLocalRoot ( ) )
output = ' '
try :
output = subprocess2 . check_output ( commit_cmd )
except subprocess2 . CalledProcessError , e :
ErrorExit ( ' Commit failed. \n %s ' % e )
finally :
os . remove ( commit_filename )
finally :
os . remove ( targets_filename )
handle , targets_filename = tempfile . mkstemp ( text = True )
os . write ( handle , " \n " . join ( change_info . GetFileNames ( ) ) )
os . close ( handle )
commit_cmd + = [ ' --file= ' + commit_filename ]
commit_cmd + = [ ' --targets= ' + targets_filename ]
# Change the current working directory before calling commit.
previous_cwd = os . getcwd ( )
os . chdir ( change_info . GetLocalRoot ( ) )
output = RunShell ( commit_cmd , True )
os . remove ( commit_filename )
os . remove ( targets_filename )
if output . find ( " Committed revision " ) != - 1 :
change_info . Delete ( )
@ -1284,7 +1304,7 @@ def CMDdiff(args):
cmd = [ ' svn ' , ' diff ' ]
cmd . extend ( [ os . path . join ( root , x ) for x in files ] )
cmd . extend ( args )
return subprocess2. call ( cmd )
return RunShellWithReturnCode( cmd , print_output = True ) [ 1 ]
@no_args
@ -1367,7 +1387,7 @@ def CMDpassthru(args):
root = GetRepositoryRoot ( )
change_info = ChangeInfo . Load ( args [ 1 ] , root , True , True )
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 ) :