#!/usr/bin/env bash

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CRATE_TOML="$SCRIPT_DIR/../Cargo.toml"
EXPECTED_HASH="$(tq --raw --file "$CRATE_TOML" '.package.metadata.upstream.commit')"
SUBMODULE_PATH="$(tq --raw --file "$CRATE_TOML" '.package.metadata.upstream.path')"
SUBMODULE_PATH="$SCRIPT_DIR/../$SUBMODULE_PATH"

# Get commit has recorded in the index (what will ship)
ACTUAL_HASH="$(git submodule status --cached "$SUBMODULE_PATH" | awk '{print $1}')"
# Truncate to length of EXPECTED_HASH as it maybe a short hash
ACTUAL_HASH="${ACTUAL_HASH:0:${#EXPECTED_HASH}}"

if [[ "$ACTUAL_HASH" != "$EXPECTED_HASH" ]]; then
  echo "Mismatch: metadata.commit=$EXPECTED_HASH vs submodule.index=$ACTUAL_HASH"
  exit 1
fi

echo "OK: metadata and submodule are in sync ($EXPECTED_HASH)"
