import os import argparse # Read the original mkdocs.yml content with open('mkdocs.yml', 'r') as file: lines = file.readlines() # Find the start and end indexes of the section to replace start_index = None end_index = None for i, line in enumerate(lines): if line.strip() == '- Portainer Stacks:': start_index = i elif line.strip() == '- Swag:': end_index = i break # Replace the lines between start and end indexes with the new content if start_index is not None and end_index is not None: lines[start_index:end_index + 1] = [' - Portainer Stacks:\n', ' - Swag:\n'] # Write the modified content back to the mkdocs.yml file with open('mkdocs.yml', 'w') as file: file.writelines(lines) # 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() # 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() # 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()) # If --replace option is provided, replace the existing "Portainer Stacks" section if args.replace: # Combine all the sorted navigation entries into a single string new_section_content = "\n".join(sorted_nav_entries) # Replace the existing "Portainer Stacks" section updated_mkdocs_content = mkdocs_content.replace(" - Portainer Stacks:\n", f" - Portainer Stacks:\n{new_section_content}\n") # Write the updated content back to mkdocs.yml 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)