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)