#!/usr/bin/env bash

# This script sets up a Python virtualenv for the Mesos CLI.
# This creates a new virtualenv, installs the necessary Python
# dependencies inside the virtualenv, and enables bash auto
# completion for the Mesos CLI.

set -e
trap "exit 1" INT

CURRDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

: ${VIRTUALENV_NAME:="mesos-cli"}
: ${VIRTUALENV_DIRECTORY:="${CURRDIR}/.virtualenv"}

: ${PYTHON:="$(which python)"}
: ${VIRTUALENV:="$(which virtualenv)"}

OLD_PYTHONPATH="${PYTHONPATH}"
PYTHONPATH=""

# If we already have a virtual environment activated,
# bail out and advise the user to deactivate.
OLD_VIRTUAL_ENV="${VIRTUAL_ENV}"
if [ "${OLD_VIRTUAL_ENV}" != "" ]; then
  echo "Please deactivate your current virtual environment in order to continue!"
  echo "source deactivate"
  exit 1
fi

# Verify that python and virtualenv are installed.
if [ "${PYTHON}" = "" ]; then
  echo "You must have python installed in order to continue."
  exit 1
fi

PYTHON_MAJOR=$(${PYTHON} -c 'import sys; print(sys.version_info[0])')
PYTHON_MINOR=$(${PYTHON} -c 'import sys; print(sys.version_info[1])')

if [ "${PYTHON_MAJOR}" != "3" ] || [ "${PYTHON_MINOR}" -lt "6" ]; then
  echo "You must be running python 3.6 or newer in order to continue."
  echo "Consider running as 'PYTHON=python3 ./bootstrap' or similar."
  exit 1
fi

# Set up a virtual environment for the CLI.
${PYTHON} -m venv --clear --prompt="${VIRTUALENV_NAME}" ${VIRTUALENV_DIRECTORY}

source ${VIRTUALENV_DIRECTORY}/bin/activate
SITE_PACKAGES=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
echo ${SITE_PACKAGES}
echo "${CURRDIR}/lib" > ${SITE_PACKAGES}/_virtualenv_path_extensions.pth
python -m pip install --upgrade pip
cd ${CURRDIR}
python -m pip install -r pip-requirements.txt
python -m pip install -r ../lib/requirements.in
cd -
deactivate

# Add custom postactivate / predeactivate scripts to add / remove
# the bin directory of this project to the current path in the
# virtual environment (as well as setup bash auto completion).
cat > ${VIRTUALENV_DIRECTORY}/bin/postactivate << EOF
#!/usr/bin/env bash
PROJECT_BIN="${CURRDIR}/bin"
PATH="\${PROJECT_BIN}:\${PATH}"
PYTHONPATH=""

EOF
cat ${CURRDIR}/mesos.bash_completion >> ${VIRTUALENV_DIRECTORY}/bin/postactivate

cat > ${VIRTUALENV_DIRECTORY}/bin/predeactivate << EOF
#!/usr/bin/env bash
PROJECT_BIN="${CURDRDIR}/bin"
PATH=\${PATH/":\${PROJECT_BIN}"/}
PATH=\${PATH/"\${PROJECT_BIN}:"/}
PYTHONPATH="${OLD_PYTHONPATH}"

complete -r mesos
EOF

echo ""
echo "Setup complete!"
echo ""
echo "To begin working, simply activate your virtual"
echo "environment and deactivate it when you are done."
echo ""

if [ "${VIRTUALENV_DIRECTORY}" = "${CURRDIR}/.virtualenv" ]; then
  # Print some info about the sucess of the installation.
  echo "    $ source activate"
  echo "    $ mesos <command> [<args>...]"
  echo "    $ source deactivate"
  echo ""
else
  echo "    $ source ${VIRTUALENV_DIRECTORY}/bin/activate"
  echo "    $ source ${VIRTUALENV_DIRECTORY}/bin/postactivate"
  echo "    $ mesos <command> [<args>...]"
  echo "    $ source ${VIRTUALENV_DIRECTORY}/bin/predeactivate"
  echo "    $ deactivate"
  echo ""
  echo "The postactivate and predeactivate files set up autocompletion."
  echo "Add the mesos binary parent directory"
  echo "${CURRDIR}/bin/"
  echo "to your path, export it, and source"
  echo "${CURRDIR}/mesos.bash_completion"
  echo "to skip these two steps in the future."
  echo ""
fi
