From 59e0042680b01d7e3cf69104921f151ceee13df4 Mon Sep 17 00:00:00 2001 From: marha Date: Thu, 27 Jan 2011 13:38:52 +0000 Subject: Print error message when svn command prints an error message --- tools/cleantree.py | 54 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 18 deletions(-) (limited to 'tools/cleantree.py') diff --git a/tools/cleantree.py b/tools/cleantree.py index b5971d480..e873723df 100644 --- a/tools/cleantree.py +++ b/tools/cleantree.py @@ -22,6 +22,8 @@ if g_Args: if not os.path.isdir(g_Args[i]): parser.error("%s is not a valid directory"%g_Args[i]) +NotWorkRe=re.compile("'\.' is not a working copy") + ################################################################################ def Print (Message,NoVerbose=None,Append='\n'): @@ -88,29 +90,18 @@ def DelTreeNoJunctions(Dir): os.rmdir(Dir) ################################################################################ -def CleanTree(Dir, NoVerbose=None): - Print("Cleaning '"+Dir+"'") - if g_Options.Recursive: - Command='svn st --no-ignore' - else: - Command='svn st -N --no-ignore' - Process=RunCommand(Command) - StdOut=Process.stdout - NotWorkRe=re.compile("'\.' is not a working copy") - while 1: - line=StdOut.readline() - if not line: - break +def ProcessSvnLine(line,NoVerbose=None): + if line: if NotWorkRe.search(line): Print(NotWorkRe.sub("'%s' is not a working copy directory. Not cleaning this directory."%(re.sub(r"\\",r"\\\\",Dir)),line)) sys.exit(1) if line[0]=='?' or line[0]=='I': - Item=re.sub("^\s+","",line[2:-1]) + Item=re.sub("^\s+","",line[2:]) if g_Options.SkipUtil: if Item[:5]=='util'+os.sep: - continue + return if Item[:6]=='tools'+os.sep: - continue + return if os.path.isdir(Item): Print('Deleting directory %s'%(os.path.abspath(Item)),NoVerbose) try: @@ -122,9 +113,36 @@ def CleanTree(Dir, NoVerbose=None): try: os.remove(Item) except Exception,Details: - print "Error deleting file %s. Is read-only?"%Item + print "Error deleting file %s. Is read-only? "%Item print Details - +################################################################################ +def CleanTree(Dir, NoVerbose=None): + Print("Cleaning '"+Dir+"'") + if g_Options.Recursive: + Command='svn st --no-ignore' + else: + Command='svn st -N --no-ignore' + Process=RunCommand(Command) + StdOut=Process.stdout + all_data="" + while 1: + done = Process.poll() + if done == None or done == 0: + line=StdOut.readline() + all_data+=line + line=line.rstrip() + ProcessSvnLine(line,NoVerbose) + if done == 0: + data=StdOut.read() + all_data+=data + for line in data.splitlines(): + ProcessSvnLine(line,NoVerbose) + break + elif done != None: + #error! + print "error running svn command:", Command + print all_data, StdOut.read() + sys.exit(1) ################################################################################ if not g_Args: g_Args=["."] -- cgit v1.2.3