#!/usr/bin/env python3
"""Generate morning briefing and send via Apple iCloud SMTP.

Credentials read from env vars (already set for calendar):
  APPLE_EMAIL           - your Apple ID email
  APPLE_APP_PASSWORD    - Apple app-specific password
  RECIPIENT             - defaults to sage.stockmans@pm.me

Uses smtp.mail.me.com:587 with STARTTLS.
"""

import os
import sys
import subprocess
import smtplib
import datetime
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

APPLE_EMAIL = os.environ.get("APPLE_EMAIL", "").strip()
APPLE_APP_PASSWORD = os.environ.get("APPLE_APP_PASSWORD", "").strip()
RECIPIENT = os.environ.get("RECIPIENT", "sage.stockmans@pm.me").strip()

SMTP_HOST = "smtp.mail.me.com"
SMTP_PORT = 587
BRIEFING_SCRIPT = "/home/thesage/.hermes/scripts/morning_briefing.py"


def generate_briefing():
    result = subprocess.run(
        [sys.executable, BRIEFING_SCRIPT],
        capture_output=True,
        text=True,
    )
    if result.returncode != 0:
        print(f"Briefing generation failed:\n{result.stderr}", file=sys.stderr)
        sys.exit(1)
    return result.stdout


def send_email(subject, body, to_addr):
    msg = MIMEMultipart()
    msg["From"] = APPLE_EMAIL
    msg["To"] = to_addr
    msg["Subject"] = subject
    msg.attach(MIMEText(body, "plain", "utf-8"))

    with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as server:
        server.starttls()
        server.login(APPLE_EMAIL, APPLE_APP_PASSWORD)
        server.sendmail(APPLE_EMAIL, to_addr, msg.as_string())


def main():
    if not APPLE_EMAIL or not APPLE_APP_PASSWORD:
        print("Error: APPLE_EMAIL and APPLE_APP_PASSWORD env vars must be set.", file=sys.stderr)
        print("Add them to /home/thesage/.hermes/.env and chmod 600 that file.", file=sys.stderr)
        sys.exit(1)

    body = generate_briefing()
    today_str = datetime.date.today().strftime("%A, %B %d")
    subject = f"Morning Briefing - {today_str}"

    send_email(subject, body, RECIPIENT)
    print(f"Sent morning briefing from {APPLE_EMAIL} to {RECIPIENT}")


if __name__ == "__main__":
    main()
