chore: publish script reintenta también en errores de red transitorios

This commit is contained in:
Sergio
2026-06-18 23:13:10 +00:00
parent 92dd0e5bfb
commit 38d3dddaea
+9 -7
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Publica llimphi a crates.io en orden de dependencias, esperando solo en rate-limit. # Publica llimphi a crates.io en orden de dependencias.
# REQUIERE: cargo login <token> (una vez). Uso: ./publish-crates.sh # Reintenta en rate-limit (429, espera 11min) y en errores de red transitorios (30s).
# Reanudable: salta los ya publicados; en 429 espera 11 min y reintenta el mismo. # Reanudable: salta los ya publicados. Uso: cargo login <token> && ./publish-crates.sh
set -u set -u
cd "$(dirname "$0")" cd "$(dirname "$0")"
while read -r c; do while read -r c; do
@@ -11,11 +11,13 @@ while read -r c; do
if out=$(cargo publish -p "$c" 2>&1); then echo " ok"; break; fi 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 if echo "$out" | grep -qiE "already (been )?uploaded|already exists|is already"; then
echo " (ya estaba, sigo)"; break echo " (ya estaba, sigo)"; break
fi elif echo "$out" | grep -qiE "429|Too Many Requests|rate.?limit"; then
if echo "$out" | grep -qiE "429|Too Many Requests|rate.?limit"; then echo " rate-limit; espero 11 min…"; sleep 660; continue
echo " rate-limit; espero 11 min y reintento $c"; sleep 660; continue elif echo "$out" | grep -qiE "curl failed|HTTP2|http2|download of .* failed|failed to get|connection|timed out|temporary failure|spurious|error sending request|reset by peer|EOF while"; then
fi echo " error de red transitorio; espero 30s y reintento…"; sleep 30; continue
else
echo "$out" | tail -8; echo "!!! error real en $c — corregir y re-correr"; exit 1 echo "$out" | tail -8; echo "!!! error real en $c — corregir y re-correr"; exit 1
fi
done done
sleep 3 sleep 3
done < PUBLISH-ORDER.txt done < PUBLISH-ORDER.txt