import click
from datetime import date, datetime
from typing import Optional

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

logger = setup_logger(__name__)

@click.group()
def cli() -> None:
    """Obsidian Sync CLI."""
    pass

@cli.command()
@click.option(
    "--date",
    "target_date",
    type=click.DateTime(formats=["%Y-%m-%d"]),
    default=datetime.now().strftime("%Y-%m-%d"),
    help="Date to sync (YYYY-MM-DD), defaults to today",
)
def sync(target_date: datetime) -> None:
    """Sync health data from Obsidian daily note for a specific date."""
    service = ObsidianSyncService()
    target_date_obj = target_date.date()
    
    click.echo(f"🔄 Syncing Obsidian data for {target_date_obj}...")
    success = service.sync_daily_note(target_date_obj)
    
    if success:
        click.echo("✅ Sync complete!")
    else:
        click.echo("⚠️  Sync failed or no file found.")

@cli.command()
def sync_today() -> None:
    """Sync today's Obsidian note (convenience command)."""
    service = ObsidianSyncService()
    today = date.today()
    
    click.echo(f"🔄 Syncing Obsidian data for today ({today})...")
    success = service.sync_daily_note(today)
    
    if success:
        click.echo("✅ Sync complete!")
    else:
        click.echo("⚠️  Sync failed or no file found.")

if __name__ == "__main__":
    cli()
