"""CLI: python scripts/download_dataset.py Registered datasets: see DATASET_REGISTRY in gps_denied.testing.download. Entries with an empty URL are manual-download-only (e.g. EuRoC via ETH Research Collection, VPAIR via a Zenodo form) — this script prints the instructions and exits instead of guessing a download URL. """ import sys from pathlib import Path from gps_denied.testing.download import DATASET_REGISTRY, download_dataset def main(argv: list[str]) -> int: if len(argv) != 2: print(f"usage: {argv[0]} ", file=sys.stderr) print(f"available: {', '.join(DATASET_REGISTRY)}", file=sys.stderr) return 2 name = argv[1] if name not in DATASET_REGISTRY: print(f"unknown dataset: {name}", file=sys.stderr) print(f"available: {', '.join(DATASET_REGISTRY)}", file=sys.stderr) return 2 spec = DATASET_REGISTRY[name] if not spec.url: print( f"Dataset '{name}' has no automated download URL.", file=sys.stderr, ) print( "Fetch manually, then place the archive so its SHA256 matches:\n" f" expected sha256: {spec.sha256}\n" f" expected path subdir under datasets/: {spec.target_subdir}\n" "See DATASET_REGISTRY comments in src/gps_denied/testing/download.py " "for per-dataset instructions.", file=sys.stderr, ) return 3 root = Path("datasets") / spec.target_subdir dest = root / Path(spec.url).name print(f"→ {dest}") download_dataset(spec, dest) print("OK") return 0 if __name__ == "__main__": sys.exit(main(sys.argv))