Mercurial > piecrust2
comparison piecrust/processing/base.py @ 35:e4c345dcf33c
More unit tests, fix a bug with the skip patterns.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 20 Aug 2014 21:46:27 -0700 |
parents | df790a827d38 |
children | 485682a6de50 |
comparison
equal
deleted
inserted
replaced
34:bdb103c57168 | 35:e4c345dcf33c |
---|---|
158 '.git*', '.hg*', '.svn'] | 158 '.git*', '.hg*', '.svn'] |
159 | 159 |
160 self.skip_patterns = make_re(self.skip_patterns) | 160 self.skip_patterns = make_re(self.skip_patterns) |
161 self.force_patterns = make_re(self.force_patterns) | 161 self.force_patterns = make_re(self.force_patterns) |
162 | 162 |
163 def filterProcessors(self, authorized_names): | |
164 self.processors = list(filter( | |
165 lambda p: p.PROCESSOR_NAME in authorized_names, | |
166 self.processors)) | |
167 | |
163 def run(self, src_dir_or_file=None): | 168 def run(self, src_dir_or_file=None): |
164 record = ProcessorPipelineRecord() | 169 record = ProcessorPipelineRecord() |
165 | 170 |
166 # Create the workers. | 171 # Create the workers. |
167 pool = [] | 172 pool = [] |
219 | 224 |
220 def processDirectory(self, ctx, start_dir): | 225 def processDirectory(self, ctx, start_dir): |
221 for dirpath, dirnames, filenames in os.walk(start_dir): | 226 for dirpath, dirnames, filenames in os.walk(start_dir): |
222 rel_dirpath = os.path.relpath(dirpath, start_dir) | 227 rel_dirpath = os.path.relpath(dirpath, start_dir) |
223 dirnames[:] = [d for d in dirnames | 228 dirnames[:] = [d for d in dirnames |
224 if not re_matchany(os.path.join(rel_dirpath, d), | 229 if not re_matchany(d, self.skip_patterns, rel_dirpath)] |
225 self.skip_patterns)] | |
226 | 230 |
227 for filename in filenames: | 231 for filename in filenames: |
228 if re_matchany(os.path.join(rel_dirpath, filename), | 232 if re_matchany(filename, self.skip_patterns, rel_dirpath): |
229 self.skip_patterns): | |
230 continue | 233 continue |
231 self.processFile(ctx, os.path.join(dirpath, filename)) | 234 self.processFile(ctx, os.path.join(dirpath, filename)) |
232 | 235 |
233 def processFile(self, ctx, path): | 236 def processFile(self, ctx, path): |
234 logger.debug("Queuing: %s" % path) | 237 logger.debug("Queuing: %s" % path) |
326 .replace(r'\?', r'[^/\\]')) | 329 .replace(r'\?', r'[^/\\]')) |
327 re_patterns.append(escaped_pat) | 330 re_patterns.append(escaped_pat) |
328 return [re.compile(p) for p in re_patterns] | 331 return [re.compile(p) for p in re_patterns] |
329 | 332 |
330 | 333 |
331 def re_matchany(filename, patterns): | 334 def re_matchany(filename, patterns, dirname=None): |
335 if dirname and dirname != '.': | |
336 filename = os.path.join(dirname, filename) | |
337 | |
332 # skip patterns use a forward slash regardless of the platform. | 338 # skip patterns use a forward slash regardless of the platform. |
333 filename = filename.replace('\\', '/') | 339 filename = filename.replace('\\', '/') |
334 for pattern in patterns: | 340 for pattern in patterns: |
335 if pattern.search(filename): | 341 if pattern.search(filename): |
336 return True | 342 return True |