#!/usr/bin/env bash

set -euo pipefail

PATH="/usr/bin"

VAULT="stack.env.vault"

if [[ -f "$VAULT" ]]; then

  # The subshell prevents that the environment gets polluted with all kind of variables
  # For secret variables that is even unwanted

  ( # (set -a) automatically export all variables
    set -a
    source <( LC_ALL=C.UTF-8 ansible-vault view "$VAULT" )
    set +a

    docker compose "$@"

    # It could also be done with: exec docker compose "$@"
    #
    # exec vervangt het huidige shellproces door een ander proces.
    # De subshell ((...)) verdwijnt en wordt vervangen door het docker compose-proces.
    # - Eén proces minder
    # - Signalen worden direct afgehandeld
    #   Signalen zoals SIGINT (Ctrl+C) of SIGTERM komen direct bij docker compose terecht,
    #   zonder dat de subshell ertussen zit. Dat kan netter zijn, vooral in scripts die
    #   door systemd, CI/CD of containers worden gestart.
    # - Kleine efficiëntiewinst
    #   Er blijft geen overbodige shell wachten totdat docker compose klaar is.
  )

else
  docker compose "$@"
fi

