#!/usr/bin/env python3
"""Download all information for an arXiv paper from arXiv and INSPIRE-HEP.\n
Given an arXiv ID (e.g. 2604.20797 or hep-ph/0603175), downloads:
  1. PDF from arXiv
  2. Abstract metadata from INSPIRE-HEP (_abstract.md, _abstract.html, .json)
  3. Paper BibTeX from INSPIRE-HEP (_bib.bib)
  4. References from INSPIRE-HEP (_references.bib, _references.md, _references.html)
  5. Citations from INSPIRE-HEP (_citations.bib, _citations.md, _citations.html)\n
All files are saved to the YYYY/ARXIV_ID/ folder.\n
Existing files are skipped unless --force is given.\n
Usage:
    python scripts/download_all.py 2604.20797
    python scripts/download_all.py hep-ph/0603175
    python scripts/download_all.py 2604.20797 2604.12345
    python scripts/download_all.py --force 2604.20797
"""

import argparse
import os
import sys

sys.path.insert(0, os.path.dirname(__file__))

from action_lib import download_all_paper_data
from inspire_lib import log_to_stderr

def main() -> None:
    """Parse CLI arguments and download all paper info for the given arXiv IDs."""
    parser = argparse.ArgumentParser(
        description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
    )
    parser.add_argument(
        "arxiv_ids",
        nargs="+",
        help="arXiv paper ID(s), e.g. 2604.20797 or hep-ph/0603175",
    )
    parser.add_argument(
        "--force",
        action="store_true",
        help="Re-download even if output files already exist",
    )
    args = parser.parse_args()
    #
    for arxiv_id in args.arxiv_ids:
        download_all_paper_data(arxiv_id, force=args.force)
    #
    log_to_stderr("All done.")

if __name__ == "__main__":
    main()
