#! /bin/sh
EXEC_PATH=`readlink -f $0`
EXEC_NAME=`basename $EXEC_PATH`
EXEC_DIR=`dirname $EXEC_PATH`

mlibdir=/usr/lib64
#@POST_MST_LIB_DIR@  # Update the lib dir by the post install script.
mbindir=/usr/bin
#@POST_MST_BIN_DIR@  # Update the bin dir by the post install script.

MFT_EXT_PYTHON_LIB_DIR=$mlibdir/mft/python_ext_libs
MFT_PYTHON_TOOLS=$mlibdir/mft/python_tools

PY_TOOLS_REL_PATHS=$(dirname $0)/../lib/mft/python_tools:$(dirname $0)/../lib64/mft/python_tools

if test -z "${PATH}"; then
   PATH=${mbindir}
else
   PATH=${mbindir}:${PATH}
fi

if test -z "${PYTHONPATH}"; then
   PYTHONPATH=$MFT_PYTHON_TOOLS:$PY_TOOLS_REL_PATHS:$MFT_EXT_PYTHON_LIB_DIR
else
   PYTHONPATH=$MFT_PYTHON_TOOLS:$PY_TOOLS_REL_PATHS:$MFT_EXT_PYTHON_LIB_DIR:${PYTHONPATH}
fi

# Minimum supported python version
MIN_PY_MAJOR=3
MIN_PY_MINOR=6

# Maximum supported VMWare
MAX_VMWARE_MAJOR=7
MAX_VMWARE_MINOR=0

export PATH
export PYTHONPATH
export MFT_LIB_DIR=$mlibdir
export MFT_BIN_DIR=$mbindir
PYTHON_EXEC=`find /usr/bin /bin/ /usr/local/bin -iname 'python*' 2>&1 | grep -e='*python[0-9,.]*' | sort -d | head -n 1`
which python3 >/dev/null 2>&1
if test $? -eq 0 ; then
   PYTHON_EXEC='/usr/bin/env python3'
fi

if [ -n "${PYTHON_EXEC}" ]; then
   PYTHON_VERSION=`${PYTHON_EXEC} -V 2>&1 | sed 's/Python //'`
   echo $PYTHON_VERSION | grep -e "[0-9]*\.[0-9]*\.[0-9]*" >/dev/null 2>&1
   if [ $? -eq 0 ] ; then
      MAJOR=`echo $PYTHON_VERSION | sed -E 's/([0-9]+)\.([0-9]+)\.[0-9]+/\1/'`
      MINOR=`echo $PYTHON_VERSION | sed -E 's/([0-9]+)\.([0-9]+)\.[0-9]+/\2/'`
      if [ $MAJOR -lt $MIN_PY_MAJOR ] ; then
         PYTHON_EXEC=""
      else
         if [ $MAJOR -eq $MIN_PY_MAJOR -a $MINOR -lt $MIN_PY_MINOR ] ; then
            PYTHON_EXEC=""
         fi
      fi
   else
      PYTHON_EXEC=""
   fi
else
   PYTHON_EXEC=""
fi

if [ -n "${PYTHON_EXEC}" ]; then
   vmware -v >/dev/null 2>&1
   if [ $? -eq 0 ]; then
      VMWARE_VERSION=`vmware -v | sed -E 's/VMware ESXi ([0-9]+\.[0-9]+\.[0-9]+).*/\1/'`
      MAJOR=`echo $VMWARE_VERSION | sed -E 's/([0-9]+)\.([0-9]+)\.[0-9]+/\1/'`
      MINOR=`echo $VMWARE_VERSION | sed -E 's/([0-9]+)\.([0-9]+)\.[0-9]+/\2/'`

      if [ $MAJOR -gt $MAX_VMWARE_MAJOR ]; then
         PYTHON_EXEC=""
      fi
   fi
fi

if [ -n "$PYTHON_EXEC" ] ; then
   SCRIPT_PATH=$MFT_PYTHON_TOOLS/${EXEC_NAME}/${EXEC_NAME}.py

   if test ! -f $SCRIPT_PATH; then
      SCRIPT_PATH=$(find $MFT_PYTHON_TOOLS $(echo $PY_TOOLS_REL_PATHS | sed "s/:/ /g") -name ${EXEC_NAME}.py 2>/dev/null | head -n 1)
   fi

   if test -z "${SCRIPT_PATH=}"; then
      >&2 echo "-E- Couldn't find ${EXEC_NAME}.py"
      exit 2
   fi

   exec $PYTHON_EXEC $SCRIPT_PATH "$@"
else
   SCRIPT_PATH=$MFT_BIN_DIR/${EXEC_NAME}_old

   if test ! -f  $SCRIPT_PATH; then
      >&2 echo "-E- Couldn't find ${EXEC_NAME}_old"
      exit 2
   fi

   exec $SCRIPT_PATH "$@"
fi
