#!/usr/bin/env bash
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1


binpath=${VAULT_INSTALL_DIR}/vault

IFS="," read -r -a keys <<< "${UNSEAL_KEYS}"

function fail() {
  echo "$1" 1>&2
  exit 1
}

count=0
retries=5
while :; do
   for key in "${keys[@]}"; do

    # Check the Vault seal status
    seal_status=$($binpath status -format json | jq '.sealed')

    if [[ "$seal_status" == "true" ]]; then
      echo "running unseal with $key count $count with retry $retries" >> /tmp/unseal_script.out
      "$binpath" operator unseal "$key" > /dev/null 2>&1
    else
      exit 0
    fi
  done

  wait=$((1 ** count))
  count=$((count + 1))
  if [ "$count" -lt "$retries" ]; then
      sleep "$wait"
  else
      fail "failed to unseal node"
  fi
done
