diff --git a/pelican/__init__.py b/pelican/__init__.py index 566cb3b0..a4d61b73 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -44,6 +44,7 @@ class Pelican(object): self.theme = settings['THEME'] self.output_path = settings['OUTPUT_PATH'] self.markup = settings['MARKUP'] + self.ignore_files = settings['IGNORE_FILES'] self.delete_outputdir = settings['DELETE_OUTPUT_DIRECTORY'] self.init_path() @@ -292,8 +293,8 @@ def main(): # restriction; all files are recursively checked if they # have changed, no matter what extension the filenames # have. - if files_changed(pelican.path, pelican.markup) or \ - files_changed(pelican.theme, ['']): + if files_changed(pelican.path, pelican.markup, pelican.ignore_files) or \ + files_changed(pelican.theme, [''], pelican.ignore_files): if not files_found_error: files_found_error = True pelican.run() diff --git a/pelican/settings.py b/pelican/settings.py index e4e0501d..8d6c1608 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -80,7 +80,8 @@ _DEFAULT_CONFIG = {'PATH': '.', 'TYPOGRIFY': False, 'SUMMARY_MAX_LENGTH': 50, 'PLUGINS': [], - 'TEMPLATE_PAGES': {} + 'TEMPLATE_PAGES': {}, + 'IGNORE_FILES': [] } diff --git a/pelican/utils.py b/pelican/utils.py index edf5068b..cfbc3c23 100644 --- a/pelican/utils.py +++ b/pelican/utils.py @@ -10,6 +10,7 @@ import traceback import logging import errno import locale +import fnmatch from collections import defaultdict, Hashable from functools import partial @@ -406,8 +407,7 @@ def process_translations(content_list): LAST_MTIME = 0 - -def files_changed(path, extensions): +def files_changed(path, extensions, ignores=[]): """Return True if the files have changed since the last check""" def file_times(path): @@ -415,7 +415,8 @@ def files_changed(path, extensions): for root, dirs, files in os.walk(path): dirs[:] = [x for x in dirs if x[0] != '.'] for f in files: - if any(f.endswith(ext) for ext in extensions): + if any(f.endswith(ext) for ext in extensions) \ + and not any(fnmatch.fnmatch(f, ignore) for ignore in ignores): yield os.stat(os.path.join(root, f)).st_mtime global LAST_MTIME