#! /bin/sh
# preinst script for nginx

set -e

addnginxuser() {
    # creating nginx group if he isn't already there
    if ! getent group nginx >/dev/null; then
        addgroup --system nginx >/dev/null
    fi

    # creating nginx user if he isn't already there
    if ! getent passwd nginx >/dev/null; then
        adduser \
          --system \
          --disabled-login \
          --ingroup nginx \
          --no-create-home \
          --home /nonexistent \
          --gecos "nginx user" \
          --shell /bin/false \
          nginx  >/dev/null
    fi
}

case "$1" in
    install)
        addnginxuser
        cat <<BANNER
----------------------------------------------------------------------

Thanks for using nginx!

Please find the official documentation for nginx here:
* https://nginx.org/en/docs/

Please subscribe to nginx-announce mailing list to get
the most important news about nginx:
* https://nginx.org/en/support.html

Commercial subscriptions for nginx are available on:
* https://nginx.com/products/

----------------------------------------------------------------------
BANNER
        ;;
    upgrade)
        addnginxuser
        ;;

    abort-upgrade)
        ;;

    *)
        echo "preinst called with unknown argument \`$1'" >&2
        exit 0
        ;;
esac

#DEBHELPER#

exit 0
