#!/usr/bin/env bash
#
# Summary: Deactivate virtual environment
#
# Usage: pyenv deactivate
#
# Deactivate a Python virtual environment.

set -e
[ -n "$PYENV_DEBUG" ] && set -x

unset QUIET
unset VERBOSE

while [ $# -gt 0 ]; do
  case "$1" in
  "--no-error" | "--quiet")
    QUIET=1
    ;;
  "--verbose" )
    VERBOSE=1
    ;;
  * )
    break
    ;;
  esac
  shift 1
done

shell="$(basename "${PYENV_SHELL:-$SHELL}")"
prefix="${VIRTUAL_ENV:-${PYENV_ACTIVATE}}"

if [ -z "${prefix}" ]; then
  [ -n "$QUIET" ] || echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2
  echo "false"
  exit 1
fi

if [[ "${prefix}" != "${prefix%/envs/*}" ]]; then
  version="$(basename "${prefix%/envs/*}")/envs/${prefix##*/}"
else
  version="${prefix##*/}"
fi
echo "pyenv-virtualenv: deactivate ${version}" 1>&2

if [ -n "${PYENV_ACTIVATE_SHELL}" ]; then
  # shell version set in pyenv-sh-activate should be unset
  # https://github.com/yyuu/pyenv-virtualenv/issues/61
  echo "pyenv shell --unset;"
  case "$shell" in
  fish )
    echo "set -e PYENV_ACTIVATE_SHELL;"
    ;;
  * )
    echo "unset PYENV_ACTIVATE_SHELL;"
    ;;
  esac
fi

case "${shell}" in
fish )
  cat <<EOS
setenv PYENV_DEACTIVATE "$prefix";
set -e PYENV_ACTIVATE;
EOS
  ;;
* )
  cat <<EOS
export PYENV_DEACTIVATE="$prefix";
unset PYENV_ACTIVATE;
EOS
  ;;
esac

# virtualenv/pyvenv
case "${shell}" in
fish )
  echo "set -e VIRTUAL_ENV;"
  ;;
* )
  echo "unset VIRTUAL_ENV;"
  ;;
esac


# anaconda/miniconda
if [ -n "${CONDA_DEFAULT_ENV}" ]; then
  case "${shell}" in
  fish )
    echo "set -e CONDA_DEFAULT_ENV;"
    ;;
  * )
    echo "unset CONDA_DEFAULT_ENV;"
    ;;
  esac
fi

if [ -n "${_OLD_VIRTUAL_PYTHONHOME}" ]; then
  case "${shell}" in
  fish )
    cat <<EOS
setenv PYTHONHOME "${_OLD_VIRTUAL_PYTHONHOME}";
set -e _OLD_VIRTUAL_PYTHONHOME;
EOS
    ;;
  * )
    cat <<EOS
export PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME}";
unset _OLD_VIRTUAL_PYTHONHOME;
EOS
    ;;
  esac
fi
