"""launchd 진입점 — 만료된 활성 카드 정리 + 텔레그램 알림.

10초 간격으로 호출 (StartInterval=10). 활성 카드가 없거나 만료되지 않았으면 즉시 종료.
PinStore 가 파일 기반이므로 별도 프로세스에서도 동일 활성 카드를 본다.
"""

from __future__ import annotations

import sys

from . import handler


def main() -> int:
    try:
        handler._sweep_expired_and_notify()
    except Exception as e:
        print(f'[expiry_watcher] {type(e).__name__}: {e}', file=sys.stderr)
        return 1
    return 0


if __name__ == '__main__':
    sys.exit(main())
