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

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PACK_PATH="${1:-}"

if [ -z "${PACK_PATH}" ]; then
  echo "Usage: $0 artifacts/<skill-pack>.tar.gz" >&2
  exit 2
fi

if [ ! -f "${PACK_PATH}" ]; then
  echo "Offline skill pack not found: ${PACK_PATH}" >&2
  exit 1
fi

if [ -f "${PACK_PATH}.sha256" ]; then
  expected="$(awk '{print $1}' "${PACK_PATH}.sha256")"
  actual="$(sha256sum "${PACK_PATH}" | awk '{print $1}')"
  if [ "${expected}" != "${actual}" ]; then
    echo "Checksum mismatch for ${PACK_PATH}" >&2
    exit 1
  fi
  echo "${PACK_PATH}: OK"
fi

tmp_dir="$(mktemp -d)"
cleanup() {
  rm -rf "${tmp_dir}"
}
trap cleanup EXIT

tar -C "${tmp_dir}" -xzf "${PACK_PATH}"

pack_roots="$(find "${tmp_dir}/seed-skills" -mindepth 1 -maxdepth 1 -type d -print 2>/dev/null || true)"
if [ -z "${pack_roots}" ]; then
  echo "Offline pack does not contain seed-skills/<pack>: ${PACK_PATH}" >&2
  exit 1
fi

while IFS= read -r pack_root; do
  [ -n "${pack_root}" ] || continue
  if [ ! -f "${pack_root}/_sources.json" ]; then
    echo "Skipping $(basename "${pack_root}"): missing _sources.json" >&2
    continue
  fi
  target="${ROOT_DIR}/seed-skills/$(basename "${pack_root}")"
  rm -rf "${target}"
  mkdir -p "$(dirname "${target}")"
  cp -a "${pack_root}" "${target}"
  echo "Loaded offline skill pack into ${target}"
done <<< "${pack_roots}"
