#!/usr/bin/env bash
# 拉取全部 Helm chart（钉死版本，附录 C）到 /srv/mirror/charts
set -uo pipefail
OUT=/srv/mirror/charts
mkdir -p "$OUT"; cd "$OUT"
export HELM_EXPERIMENTAL_OCI=1

add() { helm repo add "$1" "$2" >/dev/null 2>&1 || true; }
add nvidia              https://helm.ngc.nvidia.com/nvidia
add ingress-nginx       https://kubernetes.github.io/ingress-nginx
add jetstack            https://charts.jetstack.io
add harbor              https://helm.goharbor.io
add strimzi             https://strimzi.io/charts/
add bitnami             https://charts.bitnami.com/bitnami
add prometheus-community https://prometheus-community.github.io/helm-charts
add grafana             https://grafana.github.io/helm-charts
add nfs-subdir          https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm repo update >/dev/null 2>&1

pull() { # repo/chart version
  echo "[chart] $1 $2"
  helm pull "$1" --version "$2" -d "$OUT" 2>&1 | sed 's/^/   /' || echo "   FAILED: $1 $2"
}
pull nvidia/gpu-operator            v24.6.2
pull ingress-nginx/ingress-nginx    4.11.3
pull jetstack/cert-manager          v1.16.2
pull harbor/harbor                  1.16.0
pull strimzi/strimzi-kafka-operator 0.43.0
pull bitnami/redis                  20.6.0
pull bitnami/postgresql             16.7.27
pull bitnami/minio                  14.8.5
pull bitnami/clickhouse             6.3.3
pull prometheus-community/kube-prometheus-stack 65.5.1
pull grafana/loki                   6.18.0
pull grafana/promtail               6.16.6
pull nfs-subdir/nfs-subdir-external-provisioner 4.0.18

echo "=== charts done ==="
ls -lh "$OUT"/*.tgz 2>/dev/null
