diff --git a/zundler/__main__.py b/zundler/__main__.py index 0cb0615..8f370e6 100644 --- a/zundler/__main__.py +++ b/zundler/__main__.py @@ -6,6 +6,8 @@ def main(): embed_assets( args.input_path, output_path=args.output_path, + append_pre=args.append_pre, + append_post=args.append_post, ) diff --git a/zundler/args.py b/zundler/args.py index 7da2e55..874ea87 100644 --- a/zundler/args.py +++ b/zundler/args.py @@ -25,6 +25,20 @@ parser.add_argument( version=__version__, ) +parser.add_argument( + '-P', '--append-pre', + default="", + help='append JS code to inject_pre script (default: %(default)s)', +) + + +parser.add_argument( + '-p', '--append-post', + default="", + help='append JS code to inject_post script (default: %(default)s)', +) + + parser.add_argument( 'input_path', help='input path to the root HTML file', diff --git a/zundler/embed.py b/zundler/embed.py index c7e7b8c..625c41d 100644 --- a/zundler/embed.py +++ b/zundler/embed.py @@ -29,7 +29,7 @@ SCRIPT_PATH = os.path.abspath(os.path.dirname(__file__)) logger = logging.getLogger(__name__) -def embed_assets(index_file, output_path=None): +def embed_assets(index_file, output_path=None, append_pre="", append_post=""): init_files = {} for filename in [ @@ -55,10 +55,12 @@ def embed_assets(index_file, output_path=None): if not output_path: output_path = os.path.join(base_dir, new_base_name) + before = init_files['inject_pre.js'] + append_pre + after = init_files['inject_post.js'] + append_post file_tree = load_filetree( base_dir, - before=init_files['inject_pre.js'], - after=init_files['inject_post.js'], + before=before, + after=after, exclude_pattern=new_base_name, ) diff --git a/zundler/sphinxext/__init__.py b/zundler/sphinxext/__init__.py index 175dc0a..5533575 100644 --- a/zundler/sphinxext/__init__.py +++ b/zundler/sphinxext/__init__.py @@ -50,6 +50,8 @@ class ZundlerBuilder(StandaloneHTMLBuilder): embed_assets( input_path, output_path=output_path, + append_pre=self.config.zundler_append_pre, + append_post=self.config.zundler_append_post, ) @@ -75,6 +77,18 @@ def setup(app): '', ) + app.add_config_value( + 'zundler_append_pre', + '', + '', + ) + + app.add_config_value( + 'zundler_append_post', + '', + '', + ) + app.add_builder(ZundlerBuilder) return {