#!/usr/bin/env python3 """ Demo script showing how Godspeed completion status sync works. This creates sample markdown files and shows the sync behavior. """ import tempfile from pathlib import Path def demo_completion_sync(): print("=== Godspeed Completion Status Sync Demo ===\n") from src.services.godspeed.sync import GodspeedSync with tempfile.TemporaryDirectory() as temp_dir: sync_dir = Path(temp_dir) sync_engine = GodspeedSync(None, sync_dir) print("1. Creating sample markdown file with mixed completion states:") print("-" * 60) # Create sample tasks sample_tasks = [ ("task001", False, "Buy groceries", "Don't forget milk"), ("task002", True, "Call dentist", ""), ("task003", False, "Finish project", "Due next Friday"), ("task004", True, "Exercise today", "Went for a 30min run"), ] # Write to markdown file demo_file = sync_dir / "Personal.md" sync_engine._write_list_file(demo_file, sample_tasks) # Show the generated markdown with open(demo_file, "r") as f: content = f.read() print(content) print("-" * 60) print("\n2. What this represents in Godspeed:") for task_id, is_complete, title, notes in sample_tasks: status = "āœ… COMPLETED" if is_complete else "ā³ INCOMPLETE" print(f" {status}: {title}") if notes: print(f" Notes: {notes}") print("\n3. Now let's modify the markdown file (simulate user editing):") print("-" * 60) # Simulate user changes - flip some completion states modified_content = content.replace( "- [ ] Buy groceries", "- [x] Buy groceries", # Mark as complete ).replace( "- [x] Call dentist", "- [ ] Call dentist", # Mark as incomplete ) # Add a new task modified_content += "- [ ] New task from markdown \n" print(modified_content) print("-" * 60) # Write the modified content with open(demo_file, "w") as f: f.write(modified_content) # Parse the changes updated_tasks = sync_engine._read_list_file(demo_file) print("\n4. Changes that would sync to Godspeed:") print("-" * 40) for i, (task_id, is_complete, title, notes) in enumerate(updated_tasks): if i < len(sample_tasks): old_complete = sample_tasks[i][1] if old_complete != is_complete: action = "MARK COMPLETE" if is_complete else "MARK INCOMPLETE" print(f" šŸ”„ {action}: {title}") else: status = "āœ…" if is_complete else "ā³" print(f" {status} No change: {title}") else: print(f" āž• CREATE NEW: {title}") print("\n5. API calls that would be made:") print("-" * 35) print(" PATCH /tasks/task001 {'is_complete': True}") print(" PATCH /tasks/task002 {'is_complete': False}") print(" POST /tasks {'title': 'New task from markdown'}") print("\n✨ Summary:") print(" • Checking [x] or [X] in markdown marks task complete in Godspeed") print(" • Unchecking [ ] in markdown marks task incomplete in Godspeed") print(" • Adding new tasks in markdown creates them in Godspeed") print(" • Changes sync both directions during 'godspeed sync'") if __name__ == "__main__": demo_completion_sync()