#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VARS_FILE="${SCRIPT_DIR}/00-vars.sh"

require_root() {
  if [[ "${EUID}" -ne 0 ]]; then
    echo "This script must be run as root."
    exit 1
  fi
}

load_vars() {
  if [[ ! -f "${VARS_FILE}" ]]; then
    echo "Missing ${VARS_FILE}. Copy 00-vars.example to 00-vars.sh and fill in your values first."
    exit 1
  fi

  # shellcheck disable=SC1090
  source "${VARS_FILE}"

  : "${TIMEZONE:?TIMEZONE is required}"
  : "${MAILCOW_DIR:?MAILCOW_DIR is required}"
  : "${MAILCOW_BRANCH:?MAILCOW_BRANCH is required}"
  : "${MAILCOW_SKIP_CLAMD:?MAILCOW_SKIP_CLAMD is required}"
  : "${MAIL_UI_HOSTNAME:?MAIL_UI_HOSTNAME is required}"
  : "${MX_HOSTNAME:?MX_HOSTNAME is required}"
  : "${MAIL_SERVER_PUBLIC_IP:?MAIL_SERVER_PUBLIC_IP is required}"
  : "${ACME_ACCOUNT_EMAIL:?ACME_ACCOUNT_EMAIL is required}"
  : "${DMARC_REPORT_EMAIL:?DMARC_REPORT_EMAIL is required}"
  : "${HOST_NGINX_PROXY_TARGET:?HOST_NGINX_PROXY_TARGET is required}"
  : "${CUSTOMER_SAMPLE_DOMAIN:?CUSTOMER_SAMPLE_DOMAIN is required}"
}

upsert_env_var() {
  local file="$1"
  local key="$2"
  local value="$3"

  if grep -qE "^${key}=" "${file}"; then
    sed -i "s|^${key}=.*|${key}=${value}|" "${file}"
  else
    printf "%s=%s\n" "${key}" "${value}" >> "${file}"
  fi
}
