import argparse import json import os import sys import tempfile from huggingface_hub import HfApi def main() -> int: parser = argparse.ArgumentParser() parser.add_argument("--repo", required=True, help="np. Lurre/vantura-map-data") parser.add_argument("--local-file", required=True, help="np. /data/valhalla_tiles.tar.gz") parser.add_argument("--path-in-repo", required=True, help="np. valhalla_tiles.tar.gz") parser.add_argument("--meta-path-in-repo", required=True, help="np. valhalla_tiles.meta.json") parser.add_argument("--generated-at", required=True, help="ISO UTC, np. 2026-03-19T02:15:00Z") args = parser.parse_args() token = os.environ.get("HF_TOKEN") if not token: print("Brak HF_TOKEN w env.", file=sys.stderr) return 1 if not os.path.isfile(args.local_file): print(f"Plik nie istnieje: {args.local_file}", file=sys.stderr) return 1 api = HfApi(token=token) api.create_repo(repo_id=args.repo, repo_type="dataset", exist_ok=True) api.upload_file( path_or_fileobj=args.local_file, path_in_repo=args.path_in_repo, repo_id=args.repo, repo_type="dataset", token=token, ) meta_payload = {"generated_at": args.generated_at} with tempfile.NamedTemporaryFile("w", delete=False, suffix=".json", encoding="utf-8") as tmp: json.dump(meta_payload, tmp, ensure_ascii=False, indent=2) tmp_path = tmp.name try: api.upload_file( path_or_fileobj=tmp_path, path_in_repo=args.meta_path_in_repo, repo_id=args.repo, repo_type="dataset", token=token, ) finally: try: os.remove(tmp_path) except OSError: pass print(f"Wysłano mapę i metadane do {args.repo}") return 0 if __name__ == "__main__": raise SystemExit(main())