wiki/scripts/1.py
sthope 8f541f71c7
All checks were successful
continuous-integration/drone/push Build is passing
test
2023-08-19 23:13:42 +02:00

48 lines
1.8 KiB
Python

import os
import argparse
# Define the directory containing Portainer Stack Markdown files
markdown_dir = "./docs/portainer-stacks"
# Define the relative path prefix used in mkdocs.yml
relative_path_prefix = "portainer-stacks/"
# Read the existing mkdocs.yml content
with open("mkdocs.yml", "r") as f:
mkdocs_content = f.read()
# Generate navigation entries
nav_entries = []
for filename in os.listdir(markdown_dir):
if filename.endswith(".md"):
title = filename[:-3] # Remove ".md" extension
relative_path = f"{relative_path_prefix}{filename}" # Generate relative path
nav_entries.append(f" - {title}: {relative_path}") # Add 4 spaces
# List of names to ignore
names_to_ignore = ["template"] # Add names you want to ignore here
# Filter out entries to ignore
filtered_nav_entries = [entry for entry in nav_entries if not any(name in entry for name in names_to_ignore)]
# Sort the navigation entries alphabetically (case-insensitive)
sorted_nav_entries = sorted(filtered_nav_entries, key=lambda entry: entry.lower())
# Combine all the sorted navigation entries into a single string
new_section_content = "\n".join(sorted_nav_entries)
# Parse command-line arguments
parser = argparse.ArgumentParser(description="Generate navigation entries for mkdocs.yml")
parser.add_argument("--replace", action="store_true", help="Replace mkdocs.yml with new content")
args = parser.parse_args()
# If --replace option is provided, replace the existing "Portainer Stacks" section
if args.replace:
updated_mkdocs_content = mkdocs_content.replace(" - Portainer Stacks:\n", f" - Portainer Stacks:\n{new_section_content}\n")
with open("mkdocs.yml", "w") as f:
f.write(updated_mkdocs_content)
else:
# Print the sorted navigation entries with 4 spaces
for entry in sorted_nav_entries:
print(entry)