import argparse
import os

from dotenv import load_dotenv
from huggingface_hub import snapshot_download

from config import RETRIEVER_MODEL_DIR, RETRIEVER_MODEL_REPO_ID


def parse_args() -> argparse.Namespace:
    """Parse command line arguments.

    Returns:
        argparse.Namespace: Parsed arguments
    """
    parser = argparse.ArgumentParser(description="Download model from HuggingFace Hub")
    parser.add_argument(
        "--repo-id",
        type=str,
        default=RETRIEVER_MODEL_REPO_ID,
        help="HuggingFace repository ID",
    )
    parser.add_argument(
        "--local-dir",
        type=str,
        default=RETRIEVER_MODEL_DIR,
        help="Local directory to save model",
    )

    return parser.parse_args()


def main():
    """Main function to download model."""
    args = parse_args()
    load_dotenv(override=True)

    # Configuration
    HF_TOKEN = os.getenv("HF_TOKEN")

    print("Downloading model to", args.local_dir)

    # Download the model
    snapshot_download(
        token=HF_TOKEN,
        repo_id=args.repo_id,
        local_dir=args.local_dir,
        repo_type="model",
    )
    print(f"✅ Done: {args.repo_id} -> {args.local_dir}")


if __name__ == "__main__":
    main()