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

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

unset NOERROR
unset VERBOSE

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

shell="$(basename "${PYENV_SHELL:-$SHELL}")"
case "$shell" in
fish )
  echo "if functions -q deactivate;"
  ;;
*    )
  echo "if declare -f deactivate 1>/dev/null 2>&1; then"
  ;;
esac

prefix="${PYENV_ACTIVATE:-${VIRTUAL_ENV}}"

if [ -n "$VERBOSE" ]; then
  echo "  echo \"pyenv-virtualenv: deactivate ${prefix##*/}\" 1>&2;"
fi

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;
  deactivate;
else;
EOS
  ;;
*    )
  cat <<EOS
  export PYENV_DEACTIVATE="$prefix";
  unset PYENV_ACTIVATE;
  deactivate;
else
EOS
  ;;
esac

if [ -z "$NOERROR" ]; then
  echo "  echo \"pyenv-virtualenv: no virtualenv has been activated.\" 1>&2;"
fi

echo "  false;"

case "$shell" in
fish )
  echo "end;"
  ;;
*    )
  echo "fi;"
  ;;
esac
