#!/usr/bin/env bash
# 节点侧拉取脚本：从 file.liaoms.net 把一个模型目录（HuggingFace 布局）拉到本地。
# 用法: pull_model.sh <模型目录名> [目标父目录(默认当前目录)]
#   例: pull_model.sh qwen3-8b-instruct /var/lib/model-cache
set -euo pipefail
M="${1:?usage: pull_model.sh <model_dir> [dest_parent]}"
DEST="${2:-.}"
BASE="https://file.liaoms.net/models"
mkdir -p "$DEST/$M"
echo "[pull_model] $M -> $DEST/$M"
mapfile -t FILES < <(curl -fsSL "$BASE/$M/.files")
[ "${#FILES[@]}" -gt 0 ] || { echo "ERROR: empty file list for $M"; exit 1; }
for f in "${FILES[@]}"; do
  [ -z "$f" ] && continue
  curl -fL --retry 5 --retry-delay 2 -C - --create-dirs -o "$DEST/$M/$f" "$BASE/$M/$f"
done
# 校验（若有 SHA256SUMS）
if curl -fsSL "$BASE/$M/SHA256SUMS" -o "$DEST/$M/SHA256SUMS" 2>/dev/null; then
  ( cd "$DEST/$M" && sha256sum -c SHA256SUMS --quiet && echo "[pull_model] checksum OK" ) || { echo "CHECKSUM FAILED"; exit 2; }
fi
echo "[pull_model] done: $DEST/$M  (files=${#FILES[@]})"
