#!/bin/sh

rundir="$PWD"
fullscrname="$0"
scrname="$(basename -- "$fullscrname")"
fullscrpath="$(dirname -- "$fullscrname")"
if [ "$fullscrpath" = "$fullscrname" ]
then
    fullscrpath="$PWD"
else
    cd "$fullscrpath"
    fullscrpath="$PWD"
fi
cd "$rundir"
prodir="$(dirname -- "$fullscrpath")"

if [ -z $LANG ]
then
    export LANG=C
fi

locale -a | grep "^${LANG}$" > /dev/null
if [ $? != 0 ]
then
    locale -a | sed -e "s/\.utf8/.UTF-8/" | grep "^${LANG}$" > /dev/null
    if [ $? != 0 ]
    then
        echo "Error: The current LANG=$LANG value is not a registered locale on this system."
        echo "Defaulting to POSIX default LANG=C ."
        export LANG=C
    fi
fi

opts=""
if [ -n $PVIEW_DEFAULT_INIT ]
then
    opts="$PVIEW_DEFAULT_INIT"
fi
echo "$opts" | grep "v" > /dev/null 2>&1
if [ $? = 0 ]
then
    echo "MONITOR: Got init options [$opts]"
    vrb=1
else
    vrb=0
fi

case $(uname -s) in
    "Darwin")
        id1="apple_osx"
        id2="i486_osx"
    ;;

    "Linux")
        id1="x86e_linux64"
        id2="i486_linux"
        export PTC_HELP=$(which xdg-open 2> /dev/null)
    ;;

    *)
        echo "Error: Unknown platform $(uname -s)"
        exit 1
    ;;
esac

sfx=""
echo "$opts" | grep "d" > /dev/null 2>&1
if [ $? = 0 ]
then
    if [ "$vrb" = "1" ]
    then
        echo "MONITOR: _debug platform suffix requested"
    fi
    sfx="_debug"
fi
echo "$opts" | grep "32" > /dev/null 2>&1
if [ $? = 0 ]
then
    if [ "$vrb" = "1" ]
    then
        echo "MONITOR: 32-bit platform priority requested"
    fi
    mc1=${id2}${sfx}
    mc2=${id1}${sfx}
else
    mc1=${id1}${sfx}
    mc2=${id2}${sfx}
fi
echo "$opts" | grep "s" > /dev/null 2>&1
if [ $? = 0 ]
then
    if [ "$vrb" = "1" ]
    then
        echo "MONITOR: Forcing single platform [${mc1}]"
    fi
    mc2=${mc1}
fi
if [ "$vrb" = "1" ]
then
    echo "MONITOR: Launch step2pv - platforms [${mc1}] [${mc2}]"
fi

if [ ! -e "${prodir}/${mc1}/obj/step2pv" ]
then
    if [ -e "${prodir}/${mc2}/obj/step2pv" ]
    then
        mc1=${mc2}
    else
        echo "Error: Failed to find [${prodir}/${mc1}/obj/step2pv]"
        if [ ${mc2} != ${mc1} ]
        then
            echo "                   or [${prodir}/${mc2}/obj/step2pv]"
        fi
        exit 1
    fi
fi

export PVIEW_HOME="${prodir}"
if [ "$vrb" = "1" ]
then
    echo "MONITOR: Set PVIEW_HOME to [$PVIEW_HOME]"
fi

export PATH="${prodir}/${mc1}/obj:${prodir}/${mc1}/lib:${PATH}"

if [ -n $LD_LIBRARY_PATH ]
then
    export LD_LIBRARY_PATH="${prodir}/${mc1}/lib:${LD_LIBRARY_PATH}:${prodir}/${mc1}/obj"
else
    export LD_LIBRARY_PATH="${prodir}/${mc1}/lib:${prodir}/${mc1}/obj"
fi

if [ -e "${prodir}/bin/step2pv.local" ]
then
    if [ "$vrb" = "1" ]
    then
        echo "MONITOR: about to source [${prodir}/bin/step2pv.local]"
    fi
    . "${prodir}/bin/step2pv.local"
fi

if [ -e "${prodir}/bin/step2pv.src" ]
then
    if [ "$vrb" = "1" ]
    then
        echo "MONITOR: about to source [${prodir}/bin/step2pv.src]"
    fi
    . "${prodir}/bin/step2pv.src"
fi

if [ "$vrb" = "1" ]
then
    echo "MONITOR: about to launch [${prodir}/${mc1}/obj/step2pv]"
fi
export STEP2PV_DIRECTORY="${prodir}/resources/step2pv"
"${prodir}/${mc1}/obj/step2pv"  "$@"
