#!/usr/bin/python3.12
import os
import sys

from kserve_storage import Storage
from kserve_storage.logging import configure_logging, logger

configure_logging()

if len(sys.argv) < 3 or len(sys.argv) % 2 != 1:
    print("Usage: initializer-entrypoint src_uri_0 dest_path_0 ... src_uri_n dest_path_n")
    sys.exit(1)

src_uris = sys.argv[1::2]
dest_paths = sys.argv[2::2]

logger.info("Initializing, args: (src_uri, dest_path): %s", list(zip(src_uris, dest_paths)))

# Create all destination dirs before downloads (HF snapshot_download and legacy
# os.mkdir in Storage.download expect parents to exist).
for dest in dest_paths:
    if dest:
        os.makedirs(dest, exist_ok=True)

try:
    Storage.download_files(src_uris, dest_paths)
except RuntimeError as e:
    logger.error("Storage initialization failed: %s", e)
    sys.exit(1)
except Exception as e:
    logger.error("Unexpected error during storage initialization: %s", e)
    sys.exit(1)
