|
@@ -0,0 +1,64 @@
|
|
|
+
|
|
|
+from pelican import signals
|
|
|
+import os
|
|
|
+
|
|
|
+from webassets import Environment
|
|
|
+from webassets.ext.jinja2 import AssetsExtension
|
|
|
+
|
|
|
+import logging
|
|
|
+logger = logging.getLogger(__name__)
|
|
|
+
|
|
|
+
|
|
|
+def add_extension(pelican):
|
|
|
+ """add webassets' jinja2 extension to pelican"""
|
|
|
+ jinja_env = pelican.settings['JINJA_ENVIRONMENT']
|
|
|
+ if type(jinja_env) == dict: # pelican 3.7+
|
|
|
+ jinja_env = jinja_env['extensions']
|
|
|
+ jinja_env.append(AssetsExtension)
|
|
|
+ logger.debug("'pelican-webassets' added to jinja2 environment")
|
|
|
+
|
|
|
+
|
|
|
+def create_environment(generator):
|
|
|
+ """define the webassets environment for the generator"""
|
|
|
+
|
|
|
+ theme_static_dir = generator.settings['THEME_STATIC_DIR']
|
|
|
+ assets_destination = os.path.join(generator.output_path, theme_static_dir)
|
|
|
+ generator.env.assets_environment = Environment(
|
|
|
+ assets_destination, theme_static_dir)
|
|
|
+
|
|
|
+ # are we in debug mode?
|
|
|
+ in_debug = generator.settings.get(
|
|
|
+ 'WEBASSETS_DEBUG', logger.getEffectiveLevel() <= logging.DEBUG
|
|
|
+ )
|
|
|
+ if in_debug:
|
|
|
+ logger.info("'webassets' running in DEBUG mode")
|
|
|
+ generator.env.assets_environment.debug = in_debug
|
|
|
+
|
|
|
+ # pass along the additional congiuration options
|
|
|
+ for item in generator.settings.get('WEBASSETS_CONFIG', []):
|
|
|
+ generator.env.assets_environment.config[item[0]] = item[1]
|
|
|
+ logger.debug(
|
|
|
+ "'webassets' adding config: '%s' -> %s",
|
|
|
+ item[0], item[1]
|
|
|
+ )
|
|
|
+
|
|
|
+ # pass along the named bundles
|
|
|
+ for name, args, kwargs in generator.settings.get('WEBASSETS_BUNDLES', []):
|
|
|
+ generator.env.assets_environment.register(name, *args, **kwargs)
|
|
|
+ logger.debug("'webassets' registered bundle: '%s'", name)
|
|
|
+
|
|
|
+ # pass along the additional directories for webassets
|
|
|
+ paths = (
|
|
|
+ generator.settings['THEME_STATIC_PATHS'] +
|
|
|
+ generator.settings.get('WEBASSETS_SOURCE_PATHS', [])
|
|
|
+ )
|
|
|
+ logger.debug("'webassets' looding for files in: %s", paths)
|
|
|
+ for path in (paths):
|
|
|
+ generator.env.assets_environment.append_path(
|
|
|
+ os.path.join(generator.theme, path)
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+def register():
|
|
|
+ signals.initialized.connect(add_extension)
|
|
|
+ signals.generator_init.connect(create_environment)
|