2026-02-27 15:09:25 -07:00
|
|
|
# Stack selection — set LINDERHOF_STACK before sourcing, or create a .stack file
|
2026-03-01 17:43:14 -07:00
|
|
|
watch_file .stack
|
2026-02-27 15:09:25 -07:00
|
|
|
if [[ -z "${LINDERHOF_STACK:-}" ]]; then
|
|
|
|
|
if [[ -f "$PWD/.stack" ]]; then
|
|
|
|
|
LINDERHOF_STACK="$(cat "$PWD/.stack")"
|
2026-03-01 17:43:14 -07:00
|
|
|
echo "linderhof: LINDERHOF_STACK is set to '$LINDERHOF_STACK'"
|
2026-02-27 15:09:25 -07:00
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [[ -z "${LINDERHOF_STACK:-}" ]]; then
|
|
|
|
|
echo "linderhof: LINDERHOF_STACK is not set" >&2
|
2026-03-01 17:43:14 -07:00
|
|
|
echo " new here? run: ./setup.sh" >&2
|
|
|
|
|
echo " existing stack? run: echo <stack-name> > .stack" >&2
|
2026-02-27 15:09:25 -07:00
|
|
|
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"
|
|
|
|
|
|
2026-03-01 17:43:14 -07:00
|
|
|
# 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
|
|
|
|
|
|
2026-02-27 15:09:25 -07:00
|
|
|
# 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
|