Skip to content

Commit

Permalink
Merge pull request #1597 from avaris/fix_static_watcher
Browse files Browse the repository at this point in the history
Fix static path watchers
  • Loading branch information
justinmayer committed Jan 27, 2015
2 parents 173beec + 737db1d commit e3139db
Showing 1 changed file with 30 additions and 2 deletions.
32 changes: 30 additions & 2 deletions pelican/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -359,8 +359,13 @@ def main():
pelican.ignore_files),
'settings': file_watcher(args.settings)}

for static_path in settings.get("STATIC_PATHS", []):
watchers[static_path] = folder_watcher(static_path, [''], pelican.ignore_files)
old_static = settings.get("STATIC_PATHS", [])
for static_path in old_static:
# use a prefix to avoid possible overriding of standard watchers above
watchers['[static]%s' % static_path] = folder_watcher(
os.path.join(pelican.path, static_path),
[''],
pelican.ignore_files)

try:
if args.autoreload:
Expand All @@ -386,6 +391,29 @@ def _ignore_cache(pelican_obj):
original_load_cache = settings['LOAD_CONTENT_CACHE']
_ignore_cache(pelican)

# Adjust static watchers if there are any changes
new_static = settings.get("STATIC_PATHS", [])

# Added static paths
# Add new watchers and set them as modified
for static_path in set(new_static).difference(old_static):
static_key = '[static]%s' % static_path
watchers[static_key] = folder_watcher(
os.path.join(pelican.path, static_path),
[''],
pelican.ignore_files)
modified[static_key] = next(watchers[static_key])

# Removed static paths
# Remove watchers and modified values
for static_path in set(old_static).difference(new_static):
static_key = '[static]%s' % static_path
watchers.pop(static_key)
modified.pop(static_key)

# Replace old_static with the new one
old_static = new_static

if any(modified.values()):
print('\n-> Modified: {}. re-generating...'.format(
', '.join(k for k, v in modified.items() if v)))
Expand Down

0 comments on commit e3139db

Please sign in to comment.