66import zipfile
77import tarfile
88import time
9+ import logging
10+ from pprint import pformat
911
1012import config
1113import utils
@@ -40,6 +42,8 @@ def __init__(self, directory=None,
4042 def init (self , directory = None ,
4143 whitelist = None , blacklist = None ):
4244
45+ self .logger = logging .getLogger (__name__ )
46+
4347 if directory :
4448 self .directory = directory + os .sep
4549 else :
@@ -104,12 +108,32 @@ def add_to_cache(self, *args):
104108 if self .cache :
105109 self .walkcache [self .directory ].append (args )
106110
111+ def is_in_skipped (self , skipped , path ):
112+ temp = path
113+
114+ while temp :
115+ if temp in skipped :
116+ return True
117+ if temp == os .path .dirname (temp ):
118+ return False
119+ temp = os .path .dirname (temp )
120+ return False
121+
107122 def generate_files (self ):
108123 if self .directory is None :
109124 return
110125
126+ self .logger .debug ('Blacklist pattern:' )
127+ self .logger .debug (pformat (self .blacklist ))
128+ self .logger .debug ('' )
129+ self .logger .debug ('Whitelist pattern:' )
130+ self .logger .debug (pformat (self .whitelist ))
131+ self .logger .debug ('' )
132+
111133 self .init_cache ()
112134
135+ skipped_files = set ()
136+
113137 for root , dirs , files in self .walk (self .directory ):
114138 self .add_to_cache (root , dirs , files )
115139
@@ -119,15 +143,27 @@ def generate_files(self):
119143 path = os .path .join (proj_path , directory )
120144
121145 if self .determine_skip (path ):
146+ if not self .is_in_skipped (skipped_files , path ):
147+ self .logger .debug ('Skipping dir: %s' , path )
148+ skipped_files .add (path )
122149 continue
150+ else :
151+ if self .is_in_skipped (skipped_files , path ):
152+ self .logger .debug ('Keeping dir: %s' , path )
123153
124154 self .dirs .append (path )
125155
126156 for file in files :
127157 path = os .path .join (proj_path , file )
128158
129159 if self .determine_skip (path ):
160+ if not self .is_in_skipped (skipped_files , path ):
161+ self .logger .debug ('Skipping file: %s' , path )
162+ skipped_files .add (path )
130163 continue
164+ else :
165+ if self .is_in_skipped (skipped_files , path ):
166+ self .logger .debug ('Keeping file: %s' , path )
131167
132168 self .files .append (path )
133169
0 commit comments