#!/usr/bin/env bash

. /usr/share/dosis2/bin/shell-support-functions

function error() {
    echo -e "\033[31m$1\033[0m"
}

function warning() {
    echo -e "\033[33m$1\033[0m"
}

CONFFILE="/etc/postgresql/10/main/postgresql.conf"

if [ ! -f "${CONFFILE}" ]; then
    warning "Cannot find postgresql.conf configuration file"
    exit 0
else
    TMPCONFFILE="`dirname \"${CONFFILE}\"`/.`basename \"${CONFFILE}\"`"
    ORIGCONFFILE="${CONFFILE}.orig"
    BACKUPCONFFILE="${CONFFILE}.bak"
fi

if [ ! -f "${ORIGCONFFILE}" ]; then
    echo "Setting original \"${ORIGCONFFILE}\" because one did not exist"
    cp -p "${CONFFILE}" "${ORIGCONFFILE}"
else
    echo "Backup \"${CONFFILE}\" to \"${BACKUPCONFFILE}\""
    cp -p "${CONFFILE}" "${BACKUPCONFFILE}"
fi

echo "Updating configuration from \"${CONFFILE}\" to \"${TMPCONFFILE}\""
/opt/dosis2/bin/conf-edit "${CONFFILE}" --output "${TMPCONFFILE}" \
    --set .include_dir="'/opt/dosis2/etc/postgresql/10/conf.d'"

echo "Committing \"${TMPCONFFILE}\" to \"${CONFFILE}\""
mv -f "${TMPCONFFILE}" "${CONFFILE}"
chmod 0644 "${CONFFILE}"
chown postgres.postgres "${CONFFILE}"

echo "Patching /var/log/postgresql"
chown postgres "/var/log/postgresql"

active="`os-support-service status postgresql | grep Active: | cut -d: -f2 | sed -E 's,^\s+,,' | cut -d' ' -f1`"

if [ "${active}" = "active" ]; then
	su -l postgres -c "/usr/lib/postgresql/10/bin/pg_ctl reload"
fi
