#!/usr/bin/env python3
import os
from datetime import datetime
import re

# Change to the working directory
os.chdir('/Volumes/Scratch/Sites/CMassP2')

# Read the registry file
registry_path = ".smbatcher/REGISTRY.md"
with open(registry_path, 'r') as f:
    content = f.read()

lines = content.split('\n')

# Parse the registry
registry_lines = []
data_lines = []

# Find header and separate metadata
in_header = True
for i, line in enumerate(lines):
    if in_header:
        registry_lines.append(line)
        if line.startswith('|') and '---' in line:
            in_header = False
            # Skip the separator line from data
            continue
    else:
        if line.strip() == '' or line.startswith('Status codes'):
            registry_lines.append(line)
        else:
            data_lines.append(line)

# Parse table rows
entries = []
for line in data_lines:
    if line.strip() and line.startswith('|'):
        parts = [p.strip() for p in line.split('|')[1:-1]]  # Remove empty strings from split
        if len(parts) >= 6:
            entries.append({
                'line': line,
                'domain': parts[0],
                'title': parts[1],
                'description': parts[2],
                'status': parts[3],
                'batch': parts[4],
                'timestamp': parts[5]
            })

# Find all "i" status sites
implementing_sites = [e for e in entries if e['status'] == 'i']
print(f"Found {len(implementing_sites)} sites with status 'i'")
print()

# Check each site
completed_count = 0
updated_entries = []

base_path = "sites"
required_files = ['index.html', 'styles.css', 'script.js']

for entry in implementing_sites:
    domain = entry['domain']
    site_dir = os.path.join(base_path, f"{domain}-v1")

    # Check if directory exists and has all required files
    all_files_exist = True
    if os.path.isdir(site_dir):
        for required_file in required_files:
            file_path = os.path.join(site_dir, required_file)
            if not os.path.isfile(file_path):
                all_files_exist = False
                break
    else:
        all_files_exist = False

    if all_files_exist:
        # Mark as complete
        print(f"COMPLETE: {domain} - all required files found")
        current_iso8601 = datetime.now().isoformat()
        entry['status'] = 'I'
        entry['timestamp'] = current_iso8601
        completed_count += 1

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

# Rebuild the registry
updated_lines = []
updated_lines.extend(registry_lines[:3])  # Header and separator

# Add updated entries
for entry in entries:
    new_line = f"| {entry['domain']} | {entry['title']} | {entry['description']} | {entry['status']} | {entry['batch']} | {entry['timestamp']} |"
    updated_lines.append(new_line)

# Add closing lines
updated_lines.extend(registry_lines[len(registry_lines)-5:])

# Write back
updated_content = '\n'.join(updated_lines)
with open(registry_path, 'w') as f:
    f.write(updated_content)

print()
print(f"Registry updated: {completed_count} sites marked as complete")
