# Stack selection — set LINDERHOF_STACK before sourcing, or create a .stack file watch_file .stack if [[ -z "${LINDERHOF_STACK:-}" ]]; then if [[ -f "$PWD/.stack" ]]; then LINDERHOF_STACK="$(cat "$PWD/.stack")" echo "linderhof: LINDERHOF_STACK is set to '$LINDERHOF_STACK'" fi fi if [[ -z "${LINDERHOF_STACK:-}" ]]; then echo "linderhof: LINDERHOF_STACK is not set" >&2 echo " new here? run: ./setup.sh" >&2 echo " existing stack? run: echo > .stack" >&2 else export LINDERHOF_STACK export LINDERHOF_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/linderhof/$LINDERHOF_STACK" export ANSIBLE_INVENTORY="$LINDERHOF_DIR/hosts.yml" export ANSIBLE_VAULT_PASSWORD_FILE="$LINDERHOF_DIR/vault-pass" # Extract HCLOUD_TOKEN from vault for hcloud CLI and Ansible modules if [[ -f "$LINDERHOF_DIR/vault-pass" && -f "$LINDERHOF_DIR/group_vars/all/vault.yml" ]]; then HCLOUD_TOKEN="$(ansible-vault view "$LINDERHOF_DIR/group_vars/all/vault.yml" \ --vault-password-file "$LINDERHOF_DIR/vault-pass" 2>/dev/null \ | grep '^hcloud_token:' | sed 's/^hcloud_token: *"\?\(.*\)$/\1/; s/"$//')" export HCLOUD_TOKEN fi # Per-stack overrides: DOCKER_HOST, etc. — written by setup.sh if [[ -f "$LINDERHOF_DIR/stack.env" ]]; then # shellcheck source=/dev/null source "$LINDERHOF_DIR/stack.env" fi fi