#!/usr/bin/env bash
# GPU pass + index + gex44 store + cloud copy + spike. usage: tools/publish_all.sh  (claims gex44:/srv/forge-assets/ itself)
set -euo pipefail
ROOT=$(cd "$(dirname "$0")/.." && pwd); cd "$ROOT"; C=~/.claude/coord/coord
exec 9>/tmp/fal-publish.lock; flock 9   # the re-run and lighter workers never publish at the same time
python3 tools/build_index.py  # new versions first, so the GPU pass sees them (bug 7 Oct: v2 had no thumbnail)
tools/gpu/run.sh tools/gpu/measure_probe.py site/out/measure
python3 tools/build_index.py --measured site/out/measure/measured.json
for i in $(seq 1 20); do $C claim gex44:/srv/forge-assets/ --owner fal-publish --note "asset library publish" >/dev/null 2>&1 && break; sleep 30; done
rsync -a --delete --exclude store --exclude site/out --exclude browse/vendor ./ root@5.9.10.114:/srv/forge-assets/repo/
rsync -a store/blobs/ root@5.9.10.114:/srv/forge-assets/blobs/
ssh root@5.9.10.114 'chown -R root:root /srv/forge-assets/repo /srv/forge-assets/blobs && /srv/forge-assets/repo/tools/gcs_sync.sh'
$C release gex44:/srv/forge-assets/ --owner fal-publish >/dev/null 2>&1 || true
python3 tools/build_site.py "$(TZ=Europe/Paris date '+%H:%M CET')" >/dev/null && tools/publish.sh >/dev/null && find site/out/pub -delete
echo published
