From b3b960e9ef0cc29211fbaba35beab2a93884777b Mon Sep 17 00:00:00 2001 From: Brian Date: Fri, 9 May 2014 14:16:13 -0600 Subject: [PATCH] Fixed console to exit properly, wasn't finished frankly. Script now exits as expected. --- p4RemoveUnversioned.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/p4RemoveUnversioned.py b/p4RemoveUnversioned.py index 670d7b0..1d30a2c 100644 --- a/p4RemoveUnversioned.py +++ b/p4RemoveUnversioned.py @@ -1,10 +1,10 @@ -#!/usr/bin/python +#!/usr/bin/python # -*- coding: utf8 -*- # author : Brian Ernst # python_version : 2.7.6 and 3.4.0 # ================================= -# todo: switch to `p4 fstat ...`, and parse the output for clientFile and cache it. +# todo: switch to `p4 fstat ...`, and parse the output for clientFile and cache it. # todo: have a backup feature, make sure files are moved to the recycle bin or a temporary file. # todo: switch to faster method of calling p4 fstat on an entire directory and parsing it's output # todo: add option of using send2trash @@ -93,11 +93,10 @@ class Console( threading.Thread ): return self def __exit__( self, type, value, tb ): - self.running = False + self.queue.put( ( Console.MSG.SHUTDOWN, ) ) + self.queue.join( ) def run( self ): - # TODO: switch to a queue so we're not spinning and wasting a thread - self.running = True while True: data = self.queue.get( ) event = data[0] @@ -107,6 +106,8 @@ class Console( threading.Thread ): for ( pid, buffer ) in self.buffers.iteritems( ): for line in buffer: print( line ) + self.buffers.clear( ) + self.queue.task_done( ) break elif event == Console.MSG.WRITE: @@ -126,6 +127,8 @@ class Console( threading.Thread ): if pid in self.buffers: self.buffers.pop( pid, None ) + self.queue.task_done( ) + class Worker( threading.Thread ): def __init__( self, console, queue, files_to_ignore ): threading.Thread.__init__( self ) @@ -237,8 +240,8 @@ def main( args ): print( 'Perforce Command-line Client(p4) is required for this script.' ) sys.exit( 1 ) - #http://docs.python.org/library/optparse.html - parser = optparse.OptionParser( ) + #http://docs.python.org/library/optparse.html + parser = optparse.OptionParser( ) parser.add_option( "-d", "--dir", dest="directory", help="Desired directory to crawl.", default=None ) parser.add_option( "-t", "--threads", dest="thread_count", help="Number of threads to crawl your drive and poll p4.", default=100 ) @@ -247,7 +250,6 @@ def main( args ): ( options, args ) = parser.parse_args( ) - root_full_path = os.getcwd( ) # Files are added from .p4ignore