#!%%BINDIR%%/sh

## 66-yeller variable
export PROG="${MOD_NAME}"
export VERBOSITY="${MOD_VERBOSITY}"
export CLOCK_ENABLED=0
export COLOR_ENABLED="${MOD_COLOR}"

## script variable
FRONTEND_PATH="${MOD_MODULE_DIR}/frontend"
ACTIVATED_PATH="${MOD_MODULE_DIR}/activated"
DEPENDS_PATH="${ACTIVATED_PATH}/depends"

owner="${1}"
home=$(%%EXECLINEDIR%%/homeof "${owner}")
uid=$(id -u "${owner}")
gid=$(id -g "${owner}")

home_env="${home}/${MOD_SERVICE_USERCONFDIR}svscan@${owner}"

die(){
  66-yeller -fc "${@}"
  exit 111
}

check_empty_var(){
    name="${1}" var_value="${2}"
    if [ -z "${var_value}" ]; then
        die invalid value for variable: "${name}"
    fi
}

depends(){
    name="${1}"
    66-yeller %badd%n dependency: "${name}"
    touch  "${DEPENDS_PATH}/${name}" || die "unable to add dependency ${MOD_MODULE_DIR}/service/${name}"
}

enable(){
    name="${1}"
    66-yeller %benable%n service: "${name}"
    touch "${ACTIVATED_PATH}/${name}" || die "unable to enable ${MOD_MODULE_DIR}/service/${1}"
}

disable(){
    name="${1}"
    66-yeller %rdisable%n service: "${name}"
    rm -f "${ACTIVATED_PATH}/${name}" || die "disable to enable ${MOD_MODULE_DIR}/service/${1}"
}

if execl-toc -X -V DISPLAY_MANAGER; then

    check_empty_var "DISPLAY_MANAGER" "${DISPLAY_MANAGER}"

    if ! [ -e "${MOD_SERVICE_ADMDIR}${DISPLAY_MANAGER}" ] && ! [ -e "${MOD_SERVICE_SYSDIR}${DISPLAY_MANAGER}" ]; then
        die "the ${DISPLAY_MANAGER} frontend service file do not exist on your system -- please install it and try again"
    fi

    depends "${DISPLAY_MANAGER}"

    66-yeller set environment at .xsession file to: %b"${home_env}"%n
    sed -i "s:%%PATH_ENVIRONMENT%%:${home_env}:g" ".xsession" || die "unable to set environment directory at .xsession file"

    if [ -e "${home}/.xsession" ]; then
        random=$(date +%M%N)
        66-yeller -W "move existing ${home}/.xsession file to ${home}/.xsession-${random}.backup"
        mv "${home}/.xsession" "${home}/.xsession-${random}.backup" || exit 111
    fi

    66-yeller "create ${home}/.xsession"
    cp .xsession "${home}/" || exit 111
    chown "${uid}":"${gid}" "${home}/.xsession" || exit 111
fi

if execl-toc -X -V CONSOLE_TRACKER; then

    check_empty_var "CONSOLE_TRACKER" "${CONSOLE_TRACKER}"
    if ! [ -e "${MOD_SERVICE_ADMDIR}${CONSOLE_TRACKER}" ] && ! [ -e "${MOD_SERVICE_SYSDIR}${CONSOLE_TRACKER}" ]; then
        die "the ${CONSOLE_TRACKER} frontend service file do not exist on your system -- please install it and try again"
    fi
    depends "${CONSOLE_TRACKER}"
fi

if [ "${XDG_RUNTIME}" = "yes" ]; then
    enable "mount-run@${owner}"
else
    disable "mount-run@${owner}"
fi

if execl-toc -X -V DESKTOP_CMDLINE; then

    check_empty_var "DESKTOP_CMDLINE" "${DESKTOP_CMDLINE}"

    66-yeller set environment at .xinitrc file to: %b"${home_env}"%n
    sed -i "s:%%PATH_ENVIRONMENT%%:${home_env}:g" ".xinitrc" || die "unable to set environment directory at .xinitrc file"
    66-yeller set commandline at .xinitrc file to: %b"${DESKTOP_CMDLINE}"%n
    sed -i "s:%%DESKTOP_CMDLINE%%:${DESKTOP_CMDLINE}:g" ".xinitrc" || die "unable to set environment directory at .xinitrc file"

    if [ -e "${home}/.xinitrc" ]; then
        random=$(date +%M%N)
        66-yeller -W "move existing ${home}/.xinitrc file to ${home}/.xinitrc-${random}.backup"
        mv "${home}/.xinitrc" "${home}/.xinitrc-${random}.backup" || exit 111
    fi

    66-yeller -c "create ${home}/.xinitrc"
    cp .xinitrc "${home}/" || exit 111
    chown "${uid}":"${gid}" "${home}/.xinitrc" || exit 111
fi

66-yeller "%bsuccessfully%n configured"
