# This code copies and modifies the script found at
# `venv/scripts/common/activate` in CPython. This file is subject to the
# license at
#
#    https://docs.python.org/3/license.html
#
# and is under copyright by the Python Software Foundation
#
#    Copyright 2001-2018 Python Software Foundation; All Rights Reserved
#
# The full license text can be found at `venv_pack/scripts/CPYTHON_LICENSE.txt


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

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

    # This should detect bash and zsh, which have a hash command that must
    # be called to get it to forget past commands.  Without forgetting
    # past commands the $PATH changes we made may not be respected
    if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
        hash -r
    fi

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

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

_activate () {
    # unset irrelevant variables
    deactivate nondestructive

    local script_dir
    local needs_hash
    if [ -n "${BASH_VERSION:+x}" ]; then
        script_dir="$(dirname "${BASH_SOURCE[0]}")"
        needs_hash="true"
    elif [ -n "${ZSH_VERSION:+x}" ]; then
        script_dir="$(dirname "${(%):-%x}")"  # http://stackoverflow.com/a/28336473/2127762
        needs_hash="true"
    else
        script_dir="$(cd "$(dirname "$_")" && echo "$PWD")"
        needs_hash="false"
    fi

    local full_path_script_dir="$(cd "${script_dir}" && pwd)"
    local full_path_env="$(dirname "$full_path_script_dir")"
    local env_name="$(basename $full_path_env)"

    VIRTUAL_ENV=$full_path_env
    export VIRTUAL_ENV

    _OLD_VIRTUAL_PATH="$PATH"
    PATH="${full_path_script_dir}:$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

    if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
        _OLD_VIRTUAL_PS1="${PS1:-}"
        export PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1"
    fi

    if [ $needs_hash = "true" ]; then
        hash -r
    fi
}

_activate
