#!/bin/bash

# Copyright (c) Veeam Software Group GmbH

# shellcheck disable=SC2034

set -eE -u -o pipefail

SCRIPT_DIR=$(dirname "$(realpath "${BASH_SOURCE[0]}")"); readonly SCRIPT_DIR;
source "$SCRIPT_DIR/lib/error-handle.bash"
source "$SCRIPT_DIR/lib/common.bash"

setlocale en_US.utf8 || :

declare -A os_release
parse-os-release os_release
case "${os_release[ID]}" in
    rocky | rhel) ;;
    *) die "unsupported OS \"${os_release[PRETTY_NAME]}\"" ;;
esac

trap-init

while IFS=$'\t' read -r -a line; do
    [[ -n "${VCTL_PGSQL_PKGNAME:-}" ]] && die "multiple PostgreSQL installations are not supported"
    VCTL_PGSQL_PKGNAME=${line[0]}
    VCTL_PGSQL_VERSION=${line[1]}
done < <( "$SCRIPT_DIR/pgsql-lspkg" -t -L -i )

[[ -n ${VCTL_PGSQL_PKGNAME:-} && -n ${VCTL_PGSQL_VERSION:-} ]] \
    || die "failed to find installed PostgreSQL"

while IFS= read -r file; do
    case "$file" in
        /usr/lib/systemd/system/*@*.service) : ;; # skip templates
        /usr/lib/systemd/system/postgresql*.service) VCTL_PGSQL_SVCFILE=$file ;;
        */postgresql*-setup) [[ -f $file ]] && VCTL_PGSQL_SETUP=$file ;;
        */psql) VCTL_PGSQL_PSQL=$file ;;
    esac
done < <( rpm -ql "$VCTL_PGSQL_PKGNAME" "${VCTL_PGSQL_PKGNAME/-server}" )

VCTL_PGSQL_SVCNAME=$(basename "$VCTL_PGSQL_SVCFILE")

VCTL_PGSQL_PGDATA=$(systemctl show "$VCTL_PGSQL_SVCNAME" \
    | sed -ne 's/^Environment=.*PGDATA=\([^ ]\+\).*/\1/p')

set | grep '^VCTL_PGSQL_[A-Z_]\+='
