#!/bin/bash

RUNNER_GEN_DIR="${RUNNER_GEN_DIR:-/var/lib/riak}"
RELEASE_ROOT_DIR="${RELEASE_ROOT_DIR:-/usr/lib64/riak}"
PID_DIR=/var/run/riak
COMMAND=/usr/lib64/riak/bin/riak
DEBUG_COMMAND=/usr/lib64/riak/bin/riak-debug
RUNNER_LOG_DIR=/var/log/riak
RELX_CONFIG_PATH=${RUNNER_GEN_DIR}/sys.config
VMARGS_PATH=${RUNNER_GEN_DIR}/vm.args


# On first running the sys.config and vm.args will not be a link
# as cfconfig has not yet been run as a pre_start hook.  If there's no
# link use the default for now
if [ ! -L $RELX_CONFIG_PATH ]; then
    cp $RELEASE_ROOT_DIR/releases/3.0.15/sys.config $RELX_CONFIG_PATH
fi
if [ ! -L $VMARGS_PATH ]; then
    cp $RELEASE_ROOT_DIR/releases/3.0.15/vm.args $VMARGS_PATH
fi

# When running as a service, running as riak not as root, and systemd has created PID folder
if [[ $EUID -ne 0 ]]; then
    case "$1" in
        start|console|foreground)
            RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa /usr/lib64/riak/lib/patches
            ;;
        *)
            RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*}
            ;;
    esac
else
    # In this case we're running sudo riak - so have root access, but cannot rely
    # systemd having created the PID dir, and need to sudo to the riak user
    if [ ! -d $PID_DIR ]; then
        mkdir $PID_DIR
        chown riak:riak $PID_DIR
    fi
    case "$1" in
        start|console|foreground)
            su - riak -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa /usr/lib64/riak/lib/patches"
            ;;
        debug)
            # Drop the "debug" from the args as we're going to directly call riak-debug now
            shift
            # Debug may fail if run via relx script due to use of relative start location, and also need for root access
            NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${DEBUG_COMMAND} ${*}
            ;;
        *)
            ESCAPED_ARGS=`echo "$@" | sed -e 's/\([\\\(\\\){}"\x27]\)/\\\\\1/g'`
            su - riak -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${ESCAPED_ARGS}"
            ;;
    esac
fi


