import os
import re
from datetime import datetime

directories = ["CMassM1", "CMassK1", "CMassP1", "CMassY2"]
base_path = "/Volumes/Scratch/Sites"

def fix_registry_missing(dir_name):
    cmass_path = os.path.join(base_path, dir_name)
    registry_path = os.path.join(cmass_path, ".smbatcher", "REGISTRY.md")
    sites_dir = os.path.join(cmass_path, "sites")
    
    if not os.path.exists(registry_path) or not os.path.exists(sites_dir):
        print(f"Skipping {dir_name}: Missing registry or sites dir")
        return

    print(f"Processing {dir_name}...")
    
    with open(registry_path, 'r', encoding='utf-8') as f:
        content = f.read()
        lines = content.splitlines()

    # Get all domains already in registry
    registered_domains = set()
    for line in lines:
        match = re.match(r'^\| ([^|]+) \|', line.strip())
        if match:
            registered_domains.add(match.group(1).strip())

    # Get all domains in sites directory
    actual_site_dirs = [d for d in os.listdir(sites_dir) if os.path.isdir(os.path.join(sites_dir, d))]
    
    new_entries = []
    timestamp = datetime.now().strftime("%Y-%m-%dT%H:%M:%S")
    
    for site_dir in actual_site_dirs:
        # Assuming folder is domain-v1
        if site_dir.endswith("-v1"):
            domain = site_dir[:-3]
        else:
            domain = site_dir
            
        if domain not in registered_domains and domain != "Domain": # Skip header
            print(f"  Missing domain found: {domain}")
            # Format: | Domain | Title | Description | Status | Batch | Updated |
            new_entry = f"| {domain} | {domain} |  | O | 000 | {timestamp} |"
            new_entries.append(new_entry)

    if new_entries:
        with open(registry_path, 'a', encoding='utf-8') as f:
            if not content.endswith('\n'):
                f.write('\n')
            for entry in new_entries:
                f.write(entry + '\n')
        print(f"  Added {len(new_entries)} missing entries to {dir_name}")
    else:
        print(f"  No missing domains in {dir_name}")

for d in directories:
    fix_registry_missing(d)
