#!/usr/bin/env python3
"""
Claude Code skill for Obsidian health data synchronization.

This skill can be invoked in Claude Code to sync health data from Obsidian daily notes.

Usage in Claude Code:
    User: "sync obsidian data"
    User: "sync obsidian notes"
    User: "sync from obsidian"
"""

import sys
from datetime import date
from pathlib import Path

# Add parent directory to path
sys.path.insert(0, str(Path(__file__).parent.parent))

from health.services.obsidian import ObsidianSyncService
from health.utils.logging_config import setup_logger

logger = setup_logger(__name__)


def main() -> int:
    """Execute Obsidian data sync and return results.

    Returns:
        Exit code (0 for success, 1 for failure)
    """
    print("📝 Obsidian Health Data Sync\n")

    try:
        # Initialize sync service
        sync_service = ObsidianSyncService()
        today = date.today()

        # Perform sync for today
        print(f"🔄 Syncing Obsidian data for {today}...")
        success = sync_service.sync_daily_note(today)

        if success:
            print("\n✅ Sync complete!")
            print("   Data synced:")
            print("   - Fasting mode")
            print("   - Supplements")
            print("   - Alcohol consumption")
            return 0
        else:
            print("\n⚠️  No data found or sync failed.")
            print(f"   Expected note location: {sync_service._get_note_path(today)}")
            return 1

    except Exception as e:
        print(f"\n❌ Sync failed: {e}")
        import traceback
        traceback.print_exc()
        return 1


if __name__ == "__main__":
    exit_code = main()
    sys.exit(exit_code)
