"""PeerDrop Daemon — Standalone entry point.

Run with: python -m peerdrop.daemon.start --port 4001
"""

from __future__ import annotations

import argparse
import logging
import sys

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
)


def main():
    parser = argparse.ArgumentParser(description="PeerDrop Daemon")
    parser.add_argument("--port", type=int, default=4001, help="Listen port")
    parser.add_argument("--sock", type=str, default=None, help="Socket path")
    parser.add_argument("--seed", type=str, default=None, help="Identity seed for deterministic peer ID")
    parser.add_argument("--download-dir", type=str, default="~/.peerdrop/downloads", help="Directory for received files")
    parser.add_argument("--rest-port", type=int, default=None, help="Enable REST API on this port (e.g., 8080)")
    args = parser.parse_args()

    import trio
    from peerdrop.core.engine import EngineConfig
    from peerdrop.daemon.lifecycle import Daemon

    config = EngineConfig(listen_port=args.port, identity_seed=args.seed, download_dir=args.download_dir)
    sock_path = args.sock

    async def _run():
        daemon = Daemon(config=config, sock_path=sock_path, rest_port=args.rest_port)
        if daemon.is_running():
            print("Daemon already running.", file=sys.stderr)
            sys.exit(1)
        await daemon.run()

    trio.run(_run)


if __name__ == "__main__":
    main()
