#!/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] checking if version already exists on crates.io"

http_code=$(curl -s -o /dev/null -w "%{http_code}" -A "lookas-ci/1.0 (github.com/rccyx/lookas)" "https://crates.io/api/v1/crates/${name}/${version}")

if [ "$http_code" -eq 200 ]; then
  echo "[check-version] version already exists on crates.io"
  echo "[check-version] publish? no"
  echo "publish=no" >> "$GITHUB_OUTPUT"
elif [ "$http_code" -eq 404 ]; then
  echo "[check-version] version does not exist on crates.io"
  echo "[check-version] publish? yes"
  echo "publish=yes" >> "$GITHUB_OUTPUT"
else
  echo "[check-version] unexpected response from crates.io: $http_code"
  exit 1
fi
