chore: publish-crates.sh espera/reintenta en rate-limit (429)
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
1 qillqakuna · +13 −20
- publish-crates.sh +13 −20
diff --git a/publish-crates.sh b/publish-crates.sh
index 77237ae..2d235ae 100755
--- a/publish-crates.sh
+++ b/publish-crates.sh
@@ -1,29 +1,22 @@
#!/usr/bin/env bash
-# Publica llimphi a crates.io en orden de dependencias (deps primero).
-#
-# ANTES de correr (una sola vez):
-# 1) Andá a https://crates.io/settings/tokens y creá un token (login con GitHub).
-# 2) cargo login <tu-token>
-#
-# Después: ./publish-crates.sh
-# Es reanudable: si se corta (rate-limit, red), volvé a correrlo — los ya
-# publicados se saltan solos.
+# Publica llimphi a crates.io en orden de dependencias, esperando solo en rate-limit.
+# REQUIERE: cargo login <token> (una vez). Uso: ./publish-crates.sh
+# Reanudable: salta los ya publicados; en 429 espera 11 min y reintenta el mismo.
set -u
cd "$(dirname "$0")"
while read -r c; do
[ -z "$c" ] && continue
- echo ">>> publicando $c"
- if out=$(cargo publish -p "$c" 2>&1); then
- echo " ok"
- else
- if echo "$out" | grep -qiE "already (been )?uploaded|already exists|crate version .* is already"; then
- echo " (ya estaba publicado, sigo)"
- else
- echo "$out" | tail -8
- echo "!!! se detuvo en: $c — revisá el error de arriba, arreglá y re-corré el script"
- exit 1
+ while true; do
+ echo ">>> publicando $c"
+ if out=$(cargo publish -p "$c" 2>&1); then echo " ok"; break; fi
+ if echo "$out" | grep -qiE "already (been )?uploaded|already exists|is already"; then
+ echo " (ya estaba, sigo)"; break
fi
- fi
+ if echo "$out" | grep -qiE "429|Too Many Requests|rate.?limit"; then
+ echo " rate-limit; espero 11 min y reintento $c…"; sleep 660; continue
+ fi
+ echo "$out" | tail -8; echo "!!! error real en $c — corregir y re-correr"; exit 1
+ done
sleep 3
done < PUBLISH-ORDER.txt
echo "=== TODO PUBLICADO ==="