#!/usr/bin/env bash
set -euo pipefail
# ===== Auto-generated by scripts/gen-pack-installers.mjs — do not edit =====
# Pack: ANIMA 1.0 (Anime Base)  (Linux / RunPod)
# Run from your ComfyUI root (the folder containing custom_nodes/ and models/).
[ -d custom_nodes ] || { echo "[ERROR] run from your ComfyUI root (custom_nodes/ not found)"; exit 1; }
# Resolve the ComfyUI python: its venv first, then portable embed, then \$PYTHON/python3.
# Installing requirements into the wrong interpreter is why nodes silently fail to load.
if [ -n "${PYTHON:-}" ]; then PY="$PYTHON";
elif [ -x ".venv/bin/python" ]; then PY=".venv/bin/python";
elif [ -x "venv/bin/python" ]; then PY="venv/bin/python";
elif [ -x "../python_embeded/python" ]; then PY="../python_embeded/python";
else PY="python3"; fi
echo "using python: $PY"

clone() { # folder url
  if [ ! -d "custom_nodes/$1" ]; then
    echo "  cloning $1"; git clone --depth 1 "$2" "custom_nodes/$1"
    if [ -f "custom_nodes/$1/requirements.txt" ]; then echo "  installing $1 requirements.txt"; "$PY" -m pip install -r "custom_nodes/$1/requirements.txt"; fi
  else echo "  $1 present - skip"; fi
}
grab() { # relpath url
  mkdir -p "$(dirname "$1")"
  if [ ! -f "$1" ]; then echo "  downloading $(basename "$1")"; curl -L -o "$1" "$2"; else echo "  $(basename "$1") present - skip"; fi
}

echo "-------- custom nodes --------"
clone "ComfyUI-Impact-Pack" "https://github.com/ltdrdata/ComfyUI-Impact-Pack"
clone "ComfyUI-Impact-Subpack" "https://github.com/ltdrdata/ComfyUI-Impact-Subpack"
clone "rgthree-comfy" "https://github.com/rgthree/rgthree-comfy"
clone "ComfyUI-KJNodes" "https://github.com/kijai/ComfyUI-KJNodes"
clone "ComfyUI_UltimateSDUpscale" "https://github.com/ssitu/ComfyUI_UltimateSDUpscale"
clone "ComfyUI_tinyterraNodes" "https://github.com/TinyTerra/ComfyUI_tinyterraNodes"
clone "comfyui_controlnet_aux" "https://github.com/Fannovel16/comfyui_controlnet_aux"
clone "ComfyUI-Anima-LLLite" "https://github.com/kohya-ss/ComfyUI-Anima-LLLite"

echo "-------- models --------"
grab "models/diffusion_models/anima-base-v1.0.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima-base-v1.0.safetensors"
grab "models/text_encoders/qwen_3_06b_base.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/qwen_3_06b_base.safetensors"
grab "models/vae/qwen_image_vae.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/qwen_image_vae.safetensors"
grab "models/controlnet/anima-lllite-inpainting-v1.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima-lllite-inpainting-v1.safetensors"
grab "models/controlnet/anima-lllite-depth-1.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima-lllite-depth-1.safetensors"
grab "models/controlnet/anima-lllite-lineart-1.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima-lllite-lineart-1.safetensors"
grab "models/controlnet/anima-lllite-pose-1.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima-lllite-pose-1.safetensors"
grab "models/controlnet/anima-lllite-any-test-like-1-step2000.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima-lllite-any-test-like-1-step2000.safetensors"
grab "models/loras/anima-turbo-lora-v0.1.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima-turbo-lora-v0.1.safetensors"
grab "models/loras/anima-highres-aesthetic-boost.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima-highres-aesthetic-boost.safetensors"
grab "models/loras/anima-preview-3-masterpieces-v5.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima-preview-3-masterpieces-v5.safetensors"
grab "models/loras/anima_p3_rdbt_v0.29.b.122.safetensors" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/anima_p3_rdbt_v0.29.b.122.safetensors"
grab "models/upscale_models/4x_foolhardy_Remacri.pth" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/4x_foolhardy_Remacri.pth"
grab "models/upscale_models/4x-ClearRealityV1.pth" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/4x-ClearRealityV1.pth"
grab "models/ultralytics/bbox/face_yolov9c.pt" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/face_yolov9c.pt"
grab "models/ultralytics/bbox/hand_yolov9c.pt" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/hand_yolov9c.pt"
grab "models/ultralytics/bbox/Eyeful_v2-Paired.pt" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/Eyeful_v2-Paired.pt"
grab "models/ultralytics/segm/ntd11_anime_nsfw_segm_v5-variant1.pt" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/ntd11_anime_nsfw_segm_v5-variant1.pt"
grab "models/ultralytics/segm/yolo11m-seg.pt" "https://huggingface.co/Ultralytics/YOLO11/resolve/main/yolo11m-seg.pt"
grab "models/sams/sam_vit_b_01ec64.pth" "https://huggingface.co/Aitrepreneur/FLX/resolve/main/sam_vit_b_01ec64.pth"

echo "DONE. Restart ComfyUI, then load workflow.json."
