#!/usr/bin/env bash # # Summary: List all Python virtualenvs found in `$PYENV_ROOT/versions/*'. # # Usage: pyenv virtualenvs [--bare] # set -e [ -n "$PYENV_DEBUG" ] && set -x if [ -z "$PYENV_ROOT" ]; then PYENV_ROOT="${HOME}/.pyenv" fi if [ "$1" = "--bare" ]; then hit_prefix="" miss_prefix="" current_versions=() unset print_origin else hit_prefix="* " miss_prefix=" " current_versions=($(IFS=:; for version in $(pyenv-version-name); do echo "$version"; done)) print_origin="1" fi exists() { local car="$1" local cdar shift for cdar in "$@"; do if [ "${car}" == "${cdar}" ]; then return 0 fi done return 1 } print_version() { if exists "$1" "${current_versions[@]}"; then echo "${hit_prefix}${1}${print_origin+$2}" else echo "${miss_prefix}${1}${print_origin+$2}" fi } shopt -s nullglob for path in "${PYENV_ROOT}/versions/"*; do version="${path##*/}" virtualenv_prefix="$(pyenv-virtualenv-prefix "${version}" 2>/dev/null || true)" if [ -d "${virtualenv_prefix}" ]; then print_version "${version}" " (created from ${virtualenv_prefix})" fi for venv_path in "${path}/envs/"*; do venv_version="${version}/envs/${venv_path##*/}" virtualenv_prefix="$(pyenv-virtualenv-prefix "${venv_version}" 2>/dev/null || true)" if [ -d "${virtualenv_prefix}" ]; then print_version "${venv_version}" " (created from ${virtualenv_prefix})" fi done done shopt -u nullglob