Support multiple template directories

theme_dir is now a list which contains the user provided directory if
given plus the packaged theme directory.

Fixes #129
This commit is contained in:
Dougal Matthews
2014-10-01 21:51:13 +01:00
parent bc7782b362
commit 8f3c2b0b27
3 changed files with 11 additions and 5 deletions

View File

@@ -217,6 +217,7 @@ def build(config, live_server=False, dump_json=False):
if dump_json:
build_pages(config, dump_json=True)
else:
utils.copy_media_files(config['theme_dir'], config['site_dir'])
for theme_dir in config['theme_dir']:
utils.copy_media_files(theme_dir, config['site_dir'])
utils.copy_media_files(config['docs_dir'], config['site_dir'])
build_pages(config)

View File

@@ -117,9 +117,13 @@ def validate_config(user_config):
if config['extra_javascript'] is None:
config['extra_javascript'] = extra_javascript
if config['theme_dir'] is None:
package_dir = os.path.dirname(__file__)
config['theme_dir'] = os.path.join(package_dir, 'themes', config['theme'])
package_dir = os.path.dirname(__file__)
theme_dir = [os.path.join(package_dir, 'themes', config['theme'])]
if config['theme_dir'] is not None:
theme_dir.insert(0, config['theme_dir'])
config['theme_dir'] = theme_dir
if config['repo_url'] is not None and config['repo_name'] is None:
repo_host = urlparse(config['repo_url']).netloc.lower()

View File

@@ -86,7 +86,8 @@ def serve(config, options=None):
config_event_handler = ConfigEventHandler(options)
observer = observers.Observer()
observer.schedule(event_handler, config['docs_dir'], recursive=True)
observer.schedule(event_handler, config['theme_dir'], recursive=True)
for theme_dir in config['theme_dir']:
observer.schedule(event_handler, theme_dir, recursive=True)
observer.schedule(config_event_handler, '.')
observer.start()