#!/usr/bin/env bash
set -euo pipefail

DOWNLOAD_BASE="${RESONARA_DOWNLOAD_BASE_URL:-https://resonara.one/downloads/provider/bundle}"
TARGET_DIR="${1:-resonara-provider-node}"

if command -v curl >/dev/null 2>&1; then
  DOWNLOADER="curl"
elif command -v wget >/dev/null 2>&1; then
  DOWNLOADER="wget"
else
  echo "curl or wget is required" >&2
  exit 1
fi

download_file() {
  local url="$1"
  local target="$2"
  mkdir -p "$(dirname "$target")"
  if [[ "$DOWNLOADER" == "curl" ]]; then
    curl -fsSL "$url" -o "$target"
  else
    wget -qO "$target" "$url"
  fi
}

FILES=(
  "package.json"
  "package-lock.json"
  "tsconfig.base.json"
  "apps/worker/package.json"
  "apps/worker/tsconfig.json"
  "apps/worker/Dockerfile"
  "apps/worker/src/config.ts"
  "apps/worker/src/gateway-client.ts"
  "apps/worker/src/healthcheck.ts"
  "apps/worker/src/index.ts"
  "apps/worker/src/local-backend-adapter.ts"
  "apps/worker/src/ollama-adapter.ts"
  "apps/worker/src/simulate-job.ts"
  "packages/contracts/package.json"
  "packages/contracts/tsconfig.json"
  "packages/contracts/src/index.ts"
  "packages/model-catalog/package.json"
  "packages/model-catalog/tsconfig.json"
  "packages/model-catalog/src/index.ts"
  "infra/docker/provider-worker.compose.yaml"
  "infra/docker/deploy-provider-worker.sh"
  "infra/docker/setup-provider-node.sh"
  "docs/provider-onboarding-v1.md"
)

mkdir -p "$TARGET_DIR/configs/workers"

for relative_path in "${FILES[@]}"; do
  download_file "$DOWNLOAD_BASE/$relative_path" "$TARGET_DIR/$relative_path"
done

chmod +x "$TARGET_DIR/infra/docker/setup-provider-node.sh"
chmod +x "$TARGET_DIR/infra/docker/deploy-provider-worker.sh"

cat <<EOF
Provider bundle downloaded into: $TARGET_DIR

Next steps:
  cd $TARGET_DIR
  bash infra/docker/setup-provider-node.sh
  bash infra/docker/deploy-provider-worker.sh restart
  bash infra/docker/deploy-provider-worker.sh status
EOF
