#!/usr/bin/env python3
"""
Process REGISTRY.md and mark complete "i" status sites as "I".
"""
import os
import sys
from datetime import datetime

def check_site_complete(domain):
    """Check if a site has all required files."""
    site_dir = f"/Volumes/Scratch/Sites/CMassP2/sites/{domain}-v1"
    required_files = ["index.html", "styles.css", "script.js"]

    if not os.path.isdir(site_dir):
        return False

    for req_file in required_files:
        if not os.path.isfile(os.path.join(site_dir, req_file)):
            return False

    return True

def main():
    registry_path = "/Volumes/Scratch/Sites/CMassP2/.smbatcher/REGISTRY.md"

    # Read the registry
    with open(registry_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()

    # Process lines
    updated_lines = []
    completed_count = 0
    completed_sites = []

    for line in lines:
        # Check if this is a data line with status "i"
        if line.strip().startswith('|') and '|' in line and ' i ' in line:
            parts = [p.strip() for p in line.split('|')]
            if len(parts) >= 7 and parts[4] == 'i':
                domain = parts[1]

                # Check if site is complete
                if check_site_complete(domain):
                    # Update the line
                    iso_timestamp = datetime.now().isoformat()
                    parts[4] = 'I'
                    parts[6] = iso_timestamp
                    updated_line = '| ' + ' | '.join(parts[1:6]) + ' | ' + parts[6] + ' |\n'
                    updated_lines.append(updated_line)
                    completed_count += 1
                    completed_sites.append(domain)
                    print(f"COMPLETE: {domain}")
                else:
                    updated_lines.append(line)
            else:
                updated_lines.append(line)
        else:
            updated_lines.append(line)

    # Write back
    with open(registry_path, 'w', encoding='utf-8') as f:
        f.writelines(updated_lines)

    print()
    print("=" * 50)
    print(f"Marked {completed_count} sites as complete (status 'I')")
    print("=" * 50)

    return completed_count

if __name__ == '__main__':
    count = main()
    sys.exit(0)
