#!/usr/bin/env bash
set -euo pipefail

: "${TF_MODULE_DIR:?TF_MODULE_DIR is required}"
: "${STATE_BUCKET:?STATE_BUCKET is required}"
: "${STATE_KEY:?STATE_KEY is required}"
: "${STATE_REGION:?STATE_REGION is required}"
: "${AWS_PROFILE:?AWS_PROFILE is required}"
: "${STATE_USE_LOCKFILE:?STATE_USE_LOCKFILE is required}"

case "$STATE_USE_LOCKFILE" in
  true | false) ;;
  *)
    echo "STATE_USE_LOCKFILE must be true or false" >&2
    exit 2
    ;;
esac

metadata_file="$TF_MODULE_DIR/.terraform/terraform.tfstate"
[[ -f "$metadata_file" ]] || exit 1

jq -e \
  --arg bucket "$STATE_BUCKET" \
  --arg key "$STATE_KEY" \
  --arg region "$STATE_REGION" \
  --arg profile "$AWS_PROFILE" \
  --argjson use_lockfile "$STATE_USE_LOCKFILE" \
  '.backend.type == "s3"
    and .backend.config.bucket == $bucket
    and .backend.config.key == $key
    and .backend.config.region == $region
    and .backend.config.profile == $profile
    and .backend.config.use_lockfile == $use_lockfile' \
  "$metadata_file" >/dev/null 2>&1
