#!/bin/bash

# Copyright (c) Veeam Software Group GmbH

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/optparser.bash"

setlocale en_US.utf8 || :
# shellcheck disable=SC2034
declare -A op=()
declare -A ARGS=()

optparser-init op \
    --desc "Add a superuser to the PostgreSQL database."
optparser-addopt op --name "user" --narg 1 \
    --help "user (role) name"
optparser-addopt op -s "-p" -l "--passwd" --narg 1 \
    --help "environment variable name in which a password is stored"
optparser-addopt op -s "-v" -l "--verbose" \
    --help "provide more detailed output"
optparser-addopt op -s "-h" -l "--help" \
    --help "show this help message and exit"
optparser-ignore-required op help
optparser-parse op ARGS "$@" || exit 1
[[ -n ${ARGS[help]:-} ]] && { optparser-help op; exit 0; }

addargs=("${ARGS[user]}" -o SUPERUSER -o LOGIN)
[[ -n ${ARGS[verbose]:-} ]] && { addargs+=("-v"); }
[[ -n ${ARGS[passwd]:-} ]] && addargs+=("-p" "${ARGS[passwd]}")
"$SCRIPT_DIR/pgsql-addrole" "${addargs[@]}"

grantargs=(ALL --on-database postgres --to-role "${ARGS[user]}")
[[ -n ${ARGS[verbose]:-} ]] && { grantargs+=("-v"); }
"$SCRIPT_DIR/pgsql-grant" "${grantargs[@]}"
