#!/usr/bin/env bash
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
