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

ROOT="$(
  git rev-parse --show-toplevel 2>/dev/null || {
    cd "$(dirname "${BASH_SOURCE[0]}")/.."
    pwd
  }
)"

work_dir="${BURROW_OPENBAO_TOFU_DIR:-$ROOT/infra/openbao}"
plugin_cache_dir="${BURROW_TOFU_PLUGIN_CACHE_DIR:-$ROOT/.cache/opentofu/plugins}"

usage() {
  cat <<'EOF'
Usage: Scripts/openbao-tofu.sh [tofu args...]

Runs OpenTofu for Burrow OpenBao cloud seal and OpenBao API configuration. The
Vault/OpenBao provider reads VAULT_TOKEN from the environment when managing
OpenBao mounts, policies, or auth backends.

Examples:
  Scripts/openbao-tofu.sh init -backend-config=backend.hcl
  Scripts/openbao-tofu.sh plan -var-file=terraform.tfvars

Local syntax check:
  Scripts/openbao-tofu.sh init -backend=false
  Scripts/openbao-tofu.sh validate
EOF
}

if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
  exit 0
fi

mkdir -p "$plugin_cache_dir"
export TF_PLUGIN_CACHE_DIR="$plugin_cache_dir"
export TF_IN_AUTOMATION="${TF_IN_AUTOMATION:-true}"

exec nix shell --inputs-from "$ROOT" nixpkgs#opentofu -c tofu -chdir="$work_dir" "$@"
