mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-03-29 04:23:34 +01:00
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
import os
|
|
import argparse
|
|
|
|
def generate_ansible_roles_index(roles_dir, output_file, caption: str):
|
|
"""Generates an index.rst file listing all .rst files in the given directory."""
|
|
|
|
roles_dir = os.path.abspath(roles_dir)
|
|
output_file = os.path.abspath(output_file)
|
|
output_dir = os.path.dirname(output_file)
|
|
|
|
if not os.path.exists(roles_dir):
|
|
print(f"Error: Directory {roles_dir} does not exist.")
|
|
return
|
|
|
|
os.makedirs(output_dir, exist_ok=True)
|
|
|
|
rst_files = [f for f in os.listdir(roles_dir) if f.endswith(".rst")]
|
|
rst_files.sort() # Alphabetisch sortieren
|
|
|
|
# Berechne relative Pfade zur korrekten Verlinkung
|
|
rel_paths = [os.path.relpath(os.path.join(roles_dir, f), start=output_dir) for f in rst_files]
|
|
|
|
with open(output_file, "w", encoding="utf-8") as f:
|
|
f.write(f"{caption}\n===================\n\n")
|
|
f.write(f".. toctree::\n :maxdepth: 1\n :caption: {caption}\n\n")
|
|
|
|
for rel_path in rel_paths:
|
|
file_name_without_ext = os.path.splitext(rel_path)[0]
|
|
f.write(f" {file_name_without_ext}\n")
|
|
|
|
print(f"Index generated at {output_file}")
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Generate an index for documentation.")
|
|
parser.add_argument("--roles-dir", required=True, help="Directory containing .rst files.")
|
|
parser.add_argument("--output-file", required=True, help="Path to the output index.rst file.")
|
|
parser.add_argument("--caption", required=True, help="The index title")
|
|
|
|
args = parser.parse_args()
|
|
generate_ansible_roles_index(args.roles_dir, args.output_file, args.caption)
|