aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-06-16 13:05:25 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-06-16 13:05:25 +0200
commitfe8c251c26dacc14343acf6909dcd8a48124482f (patch)
tree8df5891061d8ab4993587a97962509434feb1c2c
parentDocument command line arguments. (diff)
downloadmuppet-strings-fe8c251c26dacc14343acf6909dcd8a48124482f.tar.gz
muppet-strings-fe8c251c26dacc14343acf6909dcd8a48124482f.tar.xz
Add --path-base command line argument.
-rw-r--r--Makefile5
-rw-r--r--muppet/__main__.py14
-rw-r--r--muppet/output.py23
-rw-r--r--templates/base.html8
-rw-r--r--templates/index.html23
5 files changed, 37 insertions, 36 deletions
diff --git a/Makefile b/Makefile
index a0426b1..ef1e788 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 6ca6073..65ba1ae 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 e5dca8c..59dc6a1 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 e29d88e..c435175 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 241a8d1..f1cd342 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 #}