#!/usr/bin/env bash

BASEDIR=$(dirname `dirname $0`)
VENVEXECDIR="bin"
PYVERSION=$(python -V | grep -Po '(?<=Python ).+')
PYCUSTOMPATH_ARG=""
while getopts "hp:" arg; do
    case "$arg" in
        h)
            echo "USAGE: $0 [-p <path_to_python_version>]"
            exit
            ;;
        p)
            PYCUSTOMPATH_ARG="-p $OPTARG"
            PYVERSION=$("$OPTARG" "-V" 2>&1 | grep -Po '(?<=Python ).+')
            ;;
    esac
done
VENVDIR="zulip-api-py$PYVERSION-venv"

if [ ! -d "$BASEDIR/$VENVDIR" ]; then
    virtualenv $PYCUSTOMPATH_ARG "$BASEDIR/$VENVDIR"
    echo "Virtualenv created."
fi

if [[ ! -d "$BASEDIR/$VENVDIR/$VENVEXECDIR" ]]; then
    # POSIX compatibility layer and Linux environment emulation for Windows
    # Virtual uses /Scripts instead of /bin on Windows.
    # Read https://virtualenv.pypa.io/en/stable/userguide/
    VENVEXECDIR="Scripts"
fi

source "$BASEDIR/$VENVDIR/$VENVEXECDIR/activate"
RVAL=$?
if [ "$RVAL" -ne 0 ]; then
    echo "Failed to activate virtualenv."
    exit
fi

# Install python dependencies if needed.
cmp "$BASEDIR/$VENVDIR/installed-requirements.txt" requirements.txt 2>/dev/null
RVAL=$? # Return value of the comparision. 0 means files are same.
if [ "$RVAL" -ne 0 ]; then
    pip install -r "$BASEDIR/requirements.txt"
    cp -a requirements.txt "$BASEDIR/$VENVDIR/installed-requirements.txt"
    echo "Requirements installed."
fi
echo 'Success!  Run `source' "$BASEDIR/$VENVDIR/$VENVEXECDIR/activate"'`' "to activate virtualenv."