#!/bin/sh

ws="server"
#ws="watch"

SCRIPTNAME="$(readlink -f "$0")"
SCRIPTDIR="$(dirname "${SCRIPTNAME}")"
SCRIPTDIRBASE="$(basename "${SCRIPTDIR}")"
if [ "${SCRIPTDIRBASE}" != "bin" ]; then
    echo "Script location error: ${SCRIPTNAME}" 1>&2
    exit 1
fi
INSTALLDIR="$(dirname "${SCRIPTDIR}")"
MINIMDIR="$(dirname "${INSTALLDIR}")"
MINIMDIRBASE="$(basename "${MINIMDIR}")"
if [ "${MINIMDIRBASE}" != "minim${ws}" ]; then
    echo "Script location error: ${SCRIPTNAME}" 1>&2
    exit 1
fi

if [ -f "${MINIMDIR}/etc/minimstart.conf" ]; then
    tab=$(printf '\t')
    JAVA="$(grep "^java[ $tab]*=" "${MINIMDIR}/etc/minimstart.conf" | head -n 1 | sed 's/\r//' | cut -f2- -d'=' | sed 's/^ *//')"
    JAVAOPTS="$(grep "^javaopts[ $tab]*=" "${MINIMDIR}/etc/minimstart.conf" | head -n 1 | sed 's/\r//' | cut -f2- -d'=' | sed 's/^ *//')"
    MINIMLANG="$(grep "^minimlang[ $tab]*=" "${MINIMDIR}/etc/minimstart.conf" | head -n 1 | sed 's/\r//' | cut -f2- -d'=' | sed 's/^ *//')"
    LANGFILE="$(grep "^langfile[ $tab]*=" "${MINIMDIR}/etc/minimstart.conf" | head -n 1 | sed 's/\r//' | cut -f2- -d'=' | sed 's/^ *//')"
    LANGKEY="$(grep "^langkey[ $tab]*=" "${MINIMDIR}/etc/minimstart.conf" | head -n 1 | sed 's/\r//' | cut -f2- -d'=' | sed 's/^ *//')"
fi

# perform migration actions if needed
"${SCRIPTDIR}/setup" migrate && echo "Saved configuration has been migrated"

# prepare to launch
cd "${MINIMDIR}/data"
if [ -f "${MINIMDIR}/etc/minim${ws}.defaults" ]; then
    MINIMOPTS="--defaults \"${MINIMDIR}/etc/minim${ws}.defaults\""
fi

# relaunch protocol
RELAUNCH=""
while :
do
    if [ -n "${JAVA}" ]; then
        JAVAX="${JAVA}"
    else
        JAVAX=java
        for f in "${MINIMDIR}"/lib/minimjre*.dir "${MINIMDIR}"/libext/minimjre*.dir
        do
            [ ! -e "$f.jmdel" ] && [ -x "$f/jre/bin/java" ] && JAVAX="$f/jre/bin/java"
        done
    fi
    if [ -n "${MINIMLANG}" ]; then
        MINIM_LANG=${MINIMLANG};
    elif [ -n "${LANGFILE}" -a -n "${LANGKEY}" ]; then
        MINIM_LANG="$(grep "^${LANGKEY}" "${LANGFILE}" | head -n 1 | cut -f2- -d'=' | sed 's/^ *//')"
    fi
    LD_LIBRARY_PATH="${MINIMDIR}/libsys" MINIM_LANG="${MINIM_LANG}" "${JAVAX}" ${JAVAOPTS} -jar "${MINIMDIR}/lib/m${ws}.jar" --launchrc ${RELAUNCH} --set watch.view=console ${MINIMOPTS} "$@"
    LAUNCHRC=$?
    [ ${LAUNCHRC} -ne 23 ] && exit ${LAUNCHRC}
    RELAUNCH="--relaunch"
done
