# Modified venv activation script used with portable Python
# Adds cmapi/ and cmapi/deps/ dirs to PYTHONPATH
# Expects to be located in cmapi/dev_tools and deps to be located in cmapi/deps (as written in README.md)


# This file must be used with "source bin/activate" *from bash*
# You cannot run it directly

cmapi_dir=$(realpath $(dirname "${BASH_SOURCE[0]}")/../)
venv_dir=$cmapi_dir/python
deps_dir=$cmapi_dir/deps


deactivate () {
    # reset old environment variables
    if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
        PATH="${_OLD_VIRTUAL_PATH:-}"
        export PATH
        unset _OLD_VIRTUAL_PATH
    fi
    if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
        PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
        export PYTHONHOME
        unset _OLD_VIRTUAL_PYTHONHOME
    fi
    if [ -n "${_OLD_VIRTUAL_PYTHONPATH:-}" ] ; then
        PYTHONPATH="${_OLD_VIRTUAL_PYTHONPATH:-}"
        export PYTHONPATH
        unset _OLD_VIRTUAL_PYTHONPATH
    fi

    # Call hash to forget past commands. Without forgetting
    # past commands the $PATH changes we made may not be respected
    hash -r 2> /dev/null

    if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
        PS1="${_OLD_VIRTUAL_PS1:-}"
        export PS1
        unset _OLD_VIRTUAL_PS1
    fi

    unset VIRTUAL_ENV
    unset VIRTUAL_ENV_PROMPT
    if [ ! "${1:-}" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate
    fi
}

# unset irrelevant variables
deactivate nondestructive

export VIRTUAL_ENV=$venv_dir

_OLD_VIRTUAL_PATH="$PATH"
echo "Adding $VIRTUAL_ENV/bin to PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH

# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "${PYTHONHOME:-}" ] ; then
    _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
    unset PYTHONHOME
fi

# Save the old PYTHONPATH if it exists
if [ -n "${PYTHONPATH:-}" ]; then
    _OLD_VIRTUAL_PYTHONPATH="${PYTHONPATH:-}"
fi

# Add cmapi/deps directory to PYTHONPATH
echo "Adding $cmapi_dir and $deps_dir to PYTHONPATH"
export PYTHONPATH="${cmapi_dir}:${deps_dir}:${PYTHONPATH:-}"

if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
    _OLD_VIRTUAL_PS1="${PS1:-}"
    PS1="(portpy) ${PS1:-}"
    export PS1
    VIRTUAL_ENV_PROMPT="(portpy) "
    export VIRTUAL_ENV_PROMPT
fi

# Call hash to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
hash -r 2> /dev/null
