set -euo pipefail
echo "[check-version] extracting crate metadata"
meta="$(cargo metadata --no-deps --format-version 1)"
name="$(echo "$meta" | jq -r '.packages[0].name')"
version="$(echo "$meta" | jq -r '.packages[0].version')"
echo "[check-version] crate: ${name}"
echo "[check-version] version: ${version}"
echo "[check-version] running cargo publish --dry-run"
log="$(mktemp)"
if cargo publish --dry-run >"$log" 2>&1; then
echo "[check-version] dry-run succeeded"
echo "[check-version] publish? yes"
echo "publish=yes" >> "$GITHUB_OUTPUT"
else
if grep -q "already exists" "$log"; then
echo "[check-version] version already exists on crates.io"
echo "[check-version] publish? no"
echo "publish=no" >> "$GITHUB_OUTPUT"
else
echo "[check-version] unexpected publish failure"
cat "$log"
exit 1
fi
fi