diff --git a/Makefile b/Makefile index a0426b15522f9ce83bc248316ba878ddf89634bb..ef1e7887fb0b03ee09dc3f6a13f4a77514110311 100644 --- a/Makefile +++ b/Makefile @@ -4,8 +4,11 @@ all: output DOC_OUTPUT = doc.rendered +OUTPUT_FLAGS = --path-base /code/muppet-strings/output \ + --env ~/puppet/generated-environments/test/modules/ + output: - python -m muppet --env ~/puppet/generated-environments/test/modules/ + python -m muppet $(OUTPUT_FLAGS) check: flake8 muppet diff --git a/muppet/__main__.py b/muppet/__main__.py index 6ca607322a2750462b7ef13211ac9bb44eba9c5d..65ba1aef89cc95da33bf11b3d7ae6ccc82781918 100644 --- a/muppet/__main__.py +++ b/muppet/__main__.py @@ -13,9 +13,15 @@ def __main() -> None: prog='puppet-doc configure', description='Sets up puppet doc') - parser.add_argument('--env', action='store', help=''' + parser.add_argument('--env', action='store', default='/etc/puppetlabs/code/modules', + help=''' Path to a puppet `modules` directory. ''') + # If deploying to http://example.com/~user/muppet then this should + # be set to `~/user/muppet` + parser.add_argument('--path-base', action='store', default='', help=''' + Prefix to web path the pages will be displayed under. + ''') parser.add_argument('modules', nargs='*', type=pathlib.Path, help=''' Any number of specific modules to generate documentation for. Mutually exclusive with --env. @@ -23,7 +29,7 @@ def __main() -> None: args = parser.parse_args() - env = args.env or '/etc/puppetlabs/code/modules' + env = args.env cache = Cache('/home/hugo/.cache/puppet-doc') @@ -34,11 +40,11 @@ def __main() -> None: else: modules = get_modules(cache, env) - setup_index('output', modules) + setup_index('output', modules, path_base=args.path_base) for module in modules: # print(module) - setup_module('output', module) + setup_module('output', module, path_base=args.path_base) if __name__ == '__main__': diff --git a/muppet/output.py b/muppet/output.py index e5dca8c1cafd3460f702c6a1cb1e2a2b23b127e0..59dc6a11399541b81d4a0caebe6893cd091b2066 100644 --- a/muppet/output.py +++ b/muppet/output.py @@ -38,11 +38,12 @@ jinja = Environment( ) -def setup_index(base: str, modules: list[ModuleEntry]) -> None: +def setup_index(base: str, modules: list[ModuleEntry], *, path_base: str) -> None: """Create the main index.html file.""" template = jinja.get_template('index.html') with open(os.path.join(base, 'index.html'), 'w') as f: - f.write(template.render(modules=modules)) + f.write(template.render(modules=modules, + path_base=path_base)) class IndexItem(TypedDict): @@ -183,7 +184,10 @@ def type_aliases_index(alias_list: list) -> IndexCategory: # return {} -def setup_module_index(base: str, module: ModuleEntry, data: dict[str, Any]) -> None: +def setup_module_index(base: str, + module: ModuleEntry, + data: dict[str, Any], + path_base: str) -> None: """Create the index file for a specific module.""" template = jinja.get_template('module_index.html') @@ -205,10 +209,11 @@ def setup_module_index(base: str, module: ModuleEntry, data: dict[str, Any]) -> with open(os.path.join(base, 'index.html'), 'w') as f: f.write(template.render(module_name=module.name, - content=content)) + content=content, + path_base=path_base)) -def setup_module(base: str, module: ModuleEntry) -> None: +def setup_module(base: str, module: ModuleEntry, *, path_base: str) -> None: """ Create all output files for a puppet module. @@ -220,7 +225,7 @@ def setup_module(base: str, module: ModuleEntry) -> None: return data = json.loads(module.strings_output) - setup_module_index(path, module, data) + setup_module_index(path, module, data, path_base=path_base) for puppet_class in data['puppet_classes'] + data['defined_types']: # localpath = puppet_class['name'].split('::') @@ -243,7 +248,8 @@ def setup_module(base: str, module: ModuleEntry) -> None: with open(os.path.join(dir, 'index.html'), 'w') as f: template = jinja.get_template('code_page.html') - f.write(template.render(content=format_class(puppet_class))) + f.write(template.render(content=format_class(puppet_class), + path_base=path_base)) # puppet_class['file'] # puppet_class['line'] @@ -261,7 +267,8 @@ def setup_module(base: str, module: ModuleEntry) -> None: template = jinja.get_template('code_page.html') with open(os.path.join(dir, 'index.html'), 'w') as f: - f.write(template.render(content=format_type_alias(type_alias))) + f.write(template.render(content=format_type_alias(type_alias), + path_base=path_base)) os.system("cp -r static output") diff --git a/templates/base.html b/templates/base.html index e29d88eec1e5f37fa68e6e4dbe068bf793d6119b..c4351755afe6cbce3b23a25cf744b945892446f4 100644 --- a/templates/base.html +++ b/templates/base.html @@ -3,10 +3,10 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link type="text/css" rel="stylesheet" href="/static/style.css"/> - <link type="text/css" rel="stylesheet" href="/static/highlight.css"/> - <link type="text/css" rel="stylesheet" href="/static/style2.css"/> - <script src="tabs.js"></script> + <link type="text/css" rel="stylesheet" href="{{ path_base }}/static/style.css"/> + <link type="text/css" rel="stylesheet" href="{{ path_base }}/static/highlight.css"/> + <link type="text/css" rel="stylesheet" href="{{ path_base }}/static/style2.css"/> + <script src="{{ path_base }}/tabs.js"></script> <noscript> <style> .noscript { diff --git a/templates/index.html b/templates/index.html index 241a8d1972a24cc694c0e68a3d44c95eef030c05..f1cd34284027f1a64ba6767b978d5824abf277ce 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,19 +1,5 @@ -<!doctype html> -<html> -<head> - <meta charset="UTF-8"/> - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - <title></title> - <!-- - <link type="text/css" rel="stylesheet" href="style.css"/> - --> -<style> -.error { - background-color: red; -} -</style> -</head> -<body> +{% extends "base.html" %} +{% block content %} <h1>Muppet Strings</h1> <ul> {% for module in modules %} @@ -30,6 +16,5 @@ </li> {% endfor %} </ul> -</body> -</html> - +{% endblock %} +{# ft: jinja #}