#!/bin/bash

set -e
set -o pipefail

source ${HOME}/.config/vault-user-token

if ! (vault token-lookup 1>/dev/null 2>&1); then
  echo "Vault is not authenticated, trying to authenticate... "

  if ! [ -f ${HOME}/bin/vault-user-token ]; then
    os=$(uname | awk '{print tolower($0)}')
    curl -sSLfo ${HOME}/bin/vault-user-token \
      https://github.com/Luzifer/vault-user-token/releases/download/${VAULT_USER_TOKEN_VERSION}/vault-user-token_${os}_amd64
    chmod 0755 ${HOME}/bin/vault-user-token
  fi

  ${HOME}/bin/vault-user-token &
  VUT=$!

  echo "Waiting for token to become available"
  while ! [ -f ${HOME}/.vault-token ]; do
    # Give the program a moment to get a token
    echo -n .
    sleep 0.5

    if ! ( kill -0 $VUT ); then
      echo "vault-user-token exitted, giving up."
      exit 1
    fi
  done
  echo

  if ! (vault token-lookup 1>/dev/null 2>&1); then
    echo "Vault authentication failed finally"
    exit 1
  fi

fi