#!/usr/bin/env python3
"""
Clean up old briefing files from Google Drive to keep folder fresh
"""

import subprocess
import json
from datetime import datetime, timedelta

def get_drive_briefing_files():
    """Get list of briefing files in Google Drive"""
    try:
        result = subprocess.run([
            'bash', '-c',
            'source ~/.gog_env && gog drive search "name contains \'strategic-brief\' or name contains \'strategic-summary\'" --account keith@atomicelevator.com'
        ], capture_output=True, text=True)
        
        if result.returncode == 0:
            # Parse the JSON output if available
            lines = result.stdout.strip().split('\n')
            files = []
            for line in lines:
                if line.startswith('id\t'):
                    continue  # Skip header
                parts = line.split('\t')
                if len(parts) >= 3:
                    files.append({
                        'id': parts[0],
                        'name': parts[1],
                        'link': parts[2] if len(parts) > 2 else ''
                    })
            return files
        else:
            print(f"Drive search error: {result.stderr}")
            return []
    except Exception as e:
        print(f"Error getting drive files: {e}")
        return []

def should_delete_file(filename, keep_days=7):
    """Determine if a briefing file should be deleted"""
    
    # Keep current day files
    today = datetime.now().strftime('%Y-%m-%d')
    if today in filename:
        return False
    
    # Keep files from last week 
    cutoff_date = datetime.now() - timedelta(days=keep_days)
    
    # Extract date from filename if possible
    try:
        if 'brief' in filename and '2026-' in filename:
            # Extract date from format like "daily-strategic-brief-2026-02-15.md"
            date_part = filename.split('2026-')[1][:10]  # Get "02-15.md" part
            date_part = '2026-' + date_part.replace('.md', '')  # Make "2026-02-15"
            file_date = datetime.strptime(date_part, '%Y-%m-%d')
            
            return file_date < cutoff_date
    except:
        pass
    
    # If we can't parse date, keep it to be safe
    return False

def delete_old_briefings(dry_run=False):
    """Delete old briefing files from Google Drive"""
    
    files = get_drive_briefing_files()
    if not files:
        print("No briefing files found in Google Drive")
        return
    
    deleted_count = 0
    kept_count = 0
    
    for file in files:
        filename = file['name']
        file_id = file['id']
        
        if should_delete_file(filename):
            if dry_run:
                print(f"Would delete: {filename}")
            else:
                try:
                    result = subprocess.run([
                        'bash', '-c',
                        f'source ~/.gog_env && gog drive delete "{file_id}" --account keith@atomicelevator.com'
                    ], capture_output=True, text=True)
                    
                    if result.returncode == 0:
                        print(f"🗑️ Deleted old briefing: {filename}")
                        deleted_count += 1
                    else:
                        print(f"Failed to delete {filename}: {result.stderr}")
                        
                except Exception as e:
                    print(f"Error deleting {filename}: {e}")
        else:
            print(f"📁 Keeping: {filename}")
            kept_count += 1
    
    print(f"\nCleanup complete: {deleted_count} deleted, {kept_count} kept")

def main():
    print("Google Drive Briefing Cleanup")
    print("=" * 40)
    
    # First show what would be deleted (dry run)
    print("Dry run - showing what would be deleted:")
    delete_old_briefings(dry_run=True)
    
    print("\n" + "=" * 40)
    print("Actual cleanup:")
    delete_old_briefings(dry_run=False)

if __name__ == "__main__":
    main()