#!/usr/bin/env bash # Resolve MAILBOX= key from inventories/production/group_vars/all/mailcow.yml set -euo pipefail REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" MAILBOX="${MAILBOX:-}" [[ -n "${MAILBOX}" ]] || { echo "MAILBOX required" >&2; exit 1; } eval "$("${REPO_ROOT}/.venv/bin/python3" - "${REPO_ROOT}" "${MAILBOX}" <<'PY' import sys, yaml, shlex, os repo, key = sys.argv[1], sys.argv[2] path = os.path.join(repo, "inventories/production/group_vars/all/mailcow.yml") with open(path) as f: data = yaml.safe_load(f) or {} boxes = data.get("mailcow_mailboxes") or {} if key not in boxes: raise SystemExit(f"Unknown MAILBOX={key!r}. Add it to mailcow_mailboxes in mailcow.yml") b = boxes[key] out = [] for k, env in [ ("local_part", "MAILBOX_LOCAL_PART"), ("name", "MAILBOX_NAME"), ("quota", "MAILBOX_QUOTA"), ]: if k in b and b[k] is not None: out.append(f"export {env}={shlex.quote(str(b[k]))}") if b.get("vault_password_key"): out.append(f"export MAILBOX_VAULT_KEY={shlex.quote(str(b['vault_password_key']))}") print("\n".join(out)) PY )"