#!/usr/bin/env bash
# Model set for Jetson Thor / Ryzen AI Max+ 395.
#   ./download.sh [dest]         core only
#   ./download.sh [dest] --alts  plus the alternatives
# ponytail: curl + sha256sum only, so it runs on a bare image with no
# python and no hf CLI installed.
set -euo pipefail
DEST="${1:-./models}"
WANT_ALTS="${2:-}"

fetch() {  # url sha256 relpath
  local url="$1" want="$2" rel="$3" out="$DEST/$3" got
  mkdir -p "$(dirname "$out")"
  if [ -f "$out" ]; then
    got=$(sha256sum "$out" | cut -d" " -f1)
    if [ "$got" = "$want" ]; then echo "ok (cached)  $rel"; return; fi
    echo "re-fetching  $rel (checksum differs)"
    rm -f "$out"
  fi
  curl -fL --retry 3 -C - -o "$out" "$url"
  got=$(sha256sum "$out" | cut -d" " -f1)
  if [ "$got" != "$want" ]; then
    echo "SHA MISMATCH $rel" >&2
    echo "  want $want" >&2
    echo "  got  $got" >&2
    exit 1
  fi
  echo "ok           $rel"
}

echo "=== core ==="
echo "-- gemma-4-E4B-it (5.41 GB)"
fetch "https://huggingface.co/bartowski/google_gemma-4-E4B-it-GGUF/resolve/main/google_gemma-4-E4B-it-Q4_K_M.gguf" \
      "d35a3aa7a6d47de237fd488bb6f7f3efd62908d828f85a63da0ee93acdbefe9f" \
      "google_gemma-4-E4B-it-Q4_K_M.gguf"
echo "-- gemma-4-E2B-it (3.46 GB)"
fetch "https://huggingface.co/bartowski/google_gemma-4-E2B-it-GGUF/resolve/main/google_gemma-4-E2B-it-Q4_K_M.gguf" \
      "923c4c86177d2ee173a7f5b4fa3d0ac65f5962ab15e6d6a5bc250aec4fd7bf7e" \
      "google_gemma-4-E2B-it-Q4_K_M.gguf"
echo "-- Qwen3-ASR-1.7B (1.50 GB)"
fetch "https://huggingface.co/foryoung365/Qwen3-ASR-1.7B-Q4_K_M-GGUF/resolve/main/Qwen3-ASR-1.7B-Q4_K_M.gguf" \
      "aa747264a2fd4ad46a6024620dee3f93addb6f01053e41b88ea3d13e8887630b" \
      "Qwen3-ASR-1.7B-Q4_K_M.gguf"
fetch "https://huggingface.co/foryoung365/Qwen3-ASR-1.7B-Q4_K_M-GGUF/resolve/main/mmproj-Qwen3-ASR-1.7B-Q4_K_M.gguf" \
      "bb6f5fdbd3ee99be3746c9ea982eedbef31ce19c38ad0631a8edd445c5ae2d61" \
      "mmproj-Qwen3-ASR-1.7B-Q4_K_M.gguf"
echo "-- Qwen3.5-0.8B (0.53 GB)"
fetch "https://huggingface.co/YrD715/Qwen3.5-0.8B-Q4_K_M/resolve/main/Qwen3.5-0.8B-Q4_K_M.gguf" \
      "bd258782e35f7f458f8aced1adc053e6e92e89bc735ba3be89d38a06121dc517" \
      "Qwen3.5-0.8B-Q4_K_M.gguf"
echo "-- BGE-M3 (0.44 GB)"
fetch "https://huggingface.co/groonga/bge-m3-Q4_K_M-GGUF/resolve/main/bge-m3-q4_k_m.gguf" \
      "44620fdb0a8d23b5ed57fe5eb8f3842eb9632b4c1363dd602246ac24bd6d1be4" \
      "bge-m3-q4_k_m.gguf"
echo "-- MemSifter-4B (2.72 GB)"
fetch "https://huggingface.co/mradermacher/MemSifter-4B-Thinking-GGUF/resolve/main/MemSifter-4B-Thinking.Q4_K_M.gguf" \
      "71dceb86369efd2e62932a1b5e0eefdd821babf0fc464bd56e830c1b5620da7c" \
      "MemSifter-4B-Thinking.Q4_K_M.gguf"
echo "-- Qwen3-VL-2B-Instruct (1.55 GB)"
fetch "https://huggingface.co/Qwen/Qwen3-VL-2B-Instruct-GGUF/resolve/main/Qwen3VL-2B-Instruct-Q4_K_M.gguf" \
      "089d75c52f4b7ffc56ba998ffc50aae89fcafc755f9e7208aacca281dca6c2ae" \
      "Qwen3VL-2B-Instruct-Q4_K_M.gguf"
fetch "https://huggingface.co/Qwen/Qwen3-VL-2B-Instruct-GGUF/resolve/main/mmproj-Qwen3VL-2B-Instruct-Q8_0.gguf" \
      "f9a68fabba69c3b81e153367b2c7521030b0fa8bb0de400c9599c8e6725f9c82" \
      "mmproj-Qwen3VL-2B-Instruct-Q8_0.gguf"
echo "-- Qwen3-TTS-12Hz-1.7B-Base (1.48 GB)"
fetch "https://huggingface.co/ggml-org/Qwen3-TTS-12Hz-1.7B-Base-GGUF/resolve/main/Qwen3-TTS-12Hz-1.7B-Base-Q4_K_M.gguf" \
      "8d18c94acb2addd042f97da63c98be144eafa76d0d9495177eab65130cf85129" \
      "Qwen3-TTS-12Hz-1.7B-Base-Q4_K_M.gguf"
fetch "https://huggingface.co/ggml-org/Qwen3-TTS-12Hz-1.7B-Base-GGUF/resolve/main/mmproj-Qwen3-TTS-12Hz-1.7B-Base-Q8_0.gguf" \
      "6fd65188839bcd6ecc91b277ad471e22a0edfada4699a0fe82f1165c18cfcce2" \
      "mmproj-Qwen3-TTS-12Hz-1.7B-Base-Q8_0.gguf"

if [ "$WANT_ALTS" = "--alts" ]; then
  echo
  echo "=== alternatives ==="
  echo "-- Qwen3-VL-4B-Instruct (2.50 GB)"
  fetch "https://huggingface.co/unsloth/Qwen3-VL-4B-Instruct-GGUF/resolve/main/Qwen3-VL-4B-Instruct-Q4_K_M.gguf" \
        "d4dcd426bfba75752a312b266b80fec8136fbaca13c62d93b7ac41fa67f0492b" \
        "Qwen3-VL-4B-Instruct-Q4_K_M.gguf"
  echo "-- Qwen3-VL-Embedding-2B (1.11 GB)"
  fetch "https://huggingface.co/DevQuasar/Qwen.Qwen3-VL-Embedding-2B-GGUF/resolve/main/Qwen.Qwen3-VL-Embedding-2B.Q4_K_M.gguf" \
        "42a4ebc629ecc6514649e12b1529b857f54900273bb854f853c970fb90edd09d" \
        "Qwen.Qwen3-VL-Embedding-2B.Q4_K_M.gguf"
  echo "-- Qwen3-VL-Reranker-2B (1.11 GB)"
  fetch "https://huggingface.co/mradermacher/Qwen3-VL-Reranker-2B-GGUF/resolve/main/Qwen3-VL-Reranker-2B.Q4_K_M.gguf" \
        "e4c2472ca5a85b815ecbcb1f74acd7e8930951f738c4e9d501153b6b4315d642" \
        "Qwen3-VL-Reranker-2B.Q4_K_M.gguf"
  echo "-- Qwen3-Embedding-0.6B (0.40 GB)"
  fetch "https://huggingface.co/enacimie/Qwen3-Embedding-0.6B-Q4_K_M-GGUF/resolve/main/qwen3-embedding-0.6b-q4_k_m.gguf" \
        "17c3e3f2eaabc6e321702b4a13680d042e72afc5d602f359f27a670c3e54718c" \
        "qwen3-embedding-0.6b-q4_k_m.gguf"
  echo "-- embeddinggemma-300m (0.24 GB)"
  fetch "https://huggingface.co/sabafallah/embeddinggemma-300m-Q4_K_M-GGUF/resolve/main/embeddinggemma-300m-q4_k_m.gguf" \
        "2decb24229f3876b66edee3f0c825edcf3ac46206819ec51aff29fd97e8ce529" \
        "embeddinggemma-300m-q4_k_m.gguf"
  echo "-- jina-embeddings-v3 (0.41 GB)"
  fetch "https://huggingface.co/sabafallah/jina-embeddings-v3-Q4_K_M-GGUF/resolve/main/jina-embeddings-v3-q4_k_m.gguf" \
        "79162c9f64e05d2cd1266a7ea74f09f42f3c4f033e92dd3d90375f3c82911c05" \
        "jina-embeddings-v3-q4_k_m.gguf"
  echo "-- bge-reranker-v2-m3 (0.44 GB)"
  fetch "https://huggingface.co/puppyM/bge-reranker-v2-m3-Q4_K_M-GGUF/resolve/main/bge-reranker-v2-m3-q4_k_m.gguf" \
        "6da9fd5754c4de579fededd9b499a4ad8166ee084c1a725466b5f1d0dd0edcdf" \
        "bge-reranker-v2-m3-q4_k_m.gguf"
  echo "-- Qwen3-Reranker-0.6B (0.40 GB)"
  fetch "https://huggingface.co/dean2155/Qwen3-Reranker-0.6B-Q4_K_M-GGUF/resolve/main/qwen3-reranker-0.6b-q4_k_m.gguf" \
        "e40a471bc092f930be2b42e50fae3ad78b1b43cc95f840ede5704d008a58d05a" \
        "qwen3-reranker-0.6b-q4_k_m.gguf"
  echo "-- mxbai-rerank-base-v2 (0.40 GB)"
  fetch "https://huggingface.co/sinjab/mxbai-rerank-base-v2-Q4_K_M-GGUF/resolve/main/mxbai-rerank-base-v2-Q4_K_M.gguf" \
        "58e749c7c0eca96632e1a53e87dcb9a49ce9cf5ae3370fd545e3084ed5ef4298" \
        "mxbai-rerank-base-v2-Q4_K_M.gguf"
fi

echo
echo "all files verified in $DEST"
