#!/usr/bin/env bash
# /srv/git/skills-pool.git/hooks/post-receive
# 仅对 tag 推送生效；main 推送只刷新 dumb HTTP 索引。
set -euo pipefail

GIT_DIR="${GIT_DIR:-/srv/git/skills-pool.git}"
RELEASES="${RELEASES:-/srv/skills/releases}"
CURRENT="${CURRENT:-/srv/skills/current}"
INDEXER="${INDEXER:-/usr/local/bin/gen-index.py}"
BASE_URL="${BASE_URL:-https://skills.bigharness.ai}"

git update-server-info

while read -r _old new ref; do
    [[ "$new" =~ ^0+$ ]] && continue
    [[ "$ref" == refs/tags/* ]] || continue

    tag="${ref#refs/tags/}"
    dest="$RELEASES/$tag"

    if [[ ! -d "$dest" ]]; then
        mkdir -p "$dest"
        git archive "$tag" | tar -x -C "$dest"
    fi

    if [[ ! -f "$RELEASES/$tag.tar.gz" ]]; then
        git archive --format=tar.gz --prefix="$tag/" \
            -o "$RELEASES/$tag.tar.gz" "$tag"
    fi

    ln -sfn "releases/$tag" "$CURRENT"

    if [[ -x "$INDEXER" ]]; then
        "$INDEXER" --root "$CURRENT" --out "$CURRENT/index.html" \
            --version "$tag" --base-url "$BASE_URL"
    fi
done
