#!/usr/bin/env bash
#
# This script is executed in the pre-installation phase
#
#   On Debian,
#       $1=install : indicates an new install
#       $1=upgrade : indicates an upgrade
#
#   On RedHat,
#       $1=1       : indicates an new install
#       $1=2       : indicates an upgrade

set -e -o pipefail

err_exit() {
    echo "$@" >&2
    exit 1
}

# source the default env file
if [ -f "${path.env}" ]; then
    . "${path.env}"
fi

export OPENSEARCH_PATH_CONF=${OPENSEARCH_PATH_CONF:-${path.conf}}

case "$1" in

    # Debian ####################################################
    install|upgrade)

        # Create opensearch group if not existing
        if ! getent group opensearch > /dev/null 2>&1 ; then
            echo -n "Creating opensearch group..."
            addgroup --quiet --system opensearch
            echo " OK"
        fi

        # Create opensearch user if not existing
        if ! id opensearch > /dev/null 2>&1 ; then
            echo -n "Creating opensearch user..."
            adduser --quiet \
                    --system \
                    --no-create-home \
                    --home /nonexistent \
                    --ingroup opensearch \
                    --disabled-password \
                    --shell /bin/false \
                    opensearch
            echo " OK"
        fi
    ;;
    abort-deconfigure|abort-upgrade|abort-remove)
    ;;

    # RedHat ####################################################
    1|2)

        # Create opensearch group if not existing
        if ! getent group opensearch > /dev/null 2>&1 ; then
            echo -n "Creating opensearch group..."
            groupadd -r opensearch
            echo " OK"
        fi

        # Create opensearch user if not existing
        if ! id opensearch > /dev/null 2>&1 ; then
            echo -n "Creating opensearch user..."
            useradd --system \
                    --no-create-home \
                    --home-dir /nonexistent \
                    --gid opensearch \
                    --shell /sbin/nologin \
                    --comment "opensearch user" \
                    opensearch
            echo " OK"
        fi
    ;;

    *)
        err_exit "pre install script called with unknown argument \`$1'"
    ;;
esac

${scripts.footer}