#!/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"
}

OS="`getos`"

if [ "${OS}" = "Ubuntu" ]; then
    CONFFILE="/etc/postgresql/10/main/postgresql.conf"
elif [ "${OS}" = "CentOS" ]; then
    CONFFILE="/var/lib/pgsql/9.2/data/postgresql.conf"
else
    error "Unsupported OS: ${OS}"
    exit 1
fi

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

if [ "${OS}" = "Ubuntu" ]; then
    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'"
elif [ "${OS}" = "CentOS" ]; then
    echo "Updating configuration from \"${CONFFILE}\" to \"${TMPCONFFILE}\""
    /opt/dosis2/bin/conf-edit "${CONFFILE}" --output "${TMPCONFFILE}" \
        --set .include_if_exists="'/opt/dosis2/etc/postgresql/9.2/postgresql.conf'"
else
    error "Unsupported OS: ${OS}"
    exit 1
fi

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"

if [ "${OS}" = "Ubuntu" ]; then
	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
elif [ "${OS}" = "CentOS" ]; then
    OSSUPPORTSVC="/opt/dosis2/bin/os-support-service"
    if [ -f "$OSSUPPORTSVC" ]; then
	   running="`$OSSUPPORTSVC status postgresql-9.2 | grep -o 'running'`"

	   if [ "${running}" = "running" ]; then
		  su -l postgres -c "/usr/pgsql-9.2/bin/pg_ctl reload"
	   fi
    else
        su -l postgres -c "/usr/pgsql-9.2/bin/pg_ctl reload"
    fi
else
	abort 1 "Unsupported OS: ${OS}"
fi
