From 436c0f1a93776657df2a3797c561477d61ebdf1d Mon Sep 17 00:00:00 2001 From: Andrew DeOrio Date: Mon, 11 Sep 2023 11:29:40 -0400 Subject: [PATCH] inve can create non-default-named virtual env from arg --- bin/inve | 51 +++++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/bin/inve b/bin/inve index f10ffd3..4748c9c 100755 --- a/bin/inve +++ b/bin/inve @@ -14,21 +14,18 @@ # Stop on errors set -Eeuo pipefail -# Search for virtual environments in directories with these names -VIRTUAL_ENV_BASENAMES=".venv venv env" +# Virtual environment search path, basenames only, space separated +VENVPATH=".venv venv env" if [ -n "${1-}" ]; then # Virtual environment root specified as argument VIRTUAL_ENV="$1" else - # Save PWD - INVE_OLDPWD="`pwd`" - - # Search up for the root of a virtual environment, trying each of the - # possible viretual env base names. + # Search from PWD to root, for any of the virtual env directory names + INVE_OLDPWD="$PWD" while [ "${PWD}" != "/" ]; do - for VIRTUAL_ENV_BASENAME in ${VIRTUAL_ENV_BASENAMES}; do - VIRTUAL_ENV="${PWD}/${VIRTUAL_ENV_BASENAME}" + for VENV_BASENAME in ${VENVPATH}; do + VIRTUAL_ENV="${PWD}/${VENV_BASENAME}" if [ -e "${VIRTUAL_ENV}/bin/activate" ]; then break 2 # break out of nested loop fi @@ -36,30 +33,28 @@ else cd .. done if [ "$PWD" = "/" ]; then - VIRTUAL_ENV_BASE=.venv - VIRTUAL_ENV="${INVE_OLDPWD}/${VIRTUAL_ENV_BASE}" - read -p "No virtual environment found. Would you like to create ${VIRTUAL_ENV_BASE} ? [yn]: " -n 1 -r - echo - if [[ $REPLY =~ ^[Yy]$ ]]; then - echo "python3 -m venv ${VIRTUAL_ENV}" - python3 -m venv "${VIRTUAL_ENV}" - echo "pip install --upgrade --quiet pip setuptools wheel" - "${VIRTUAL_ENV}/bin/pip" install --upgrade --quiet pip setuptools wheel - else - echo "exit" - exit 1 - fi + VIRTUAL_ENV="${INVE_OLDPWD}/.venv" # Default to ./.venv fi - - # Restore PWD - cd "${INVE_OLDPWD}" + cd $INVE_OLDPWD fi -# Sanity checks +# Virtual environment not found: offer to create if ! test -d "${VIRTUAL_ENV}"; then - echo "Error: directory does not exist: ${VIRTUAL_ENV}" - exit 1 + BASENAME=$(basename "$VIRTUAL_ENV") + read -p "Virtual environment not found. Create ${BASENAME} ? [yn]: " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + echo "python3 -m venv ${VIRTUAL_ENV}" + python3 -m venv "${VIRTUAL_ENV}" + echo "pip install --upgrade --quiet pip setuptools wheel" + "${VIRTUAL_ENV}/bin/pip" install --upgrade --quiet pip setuptools wheel + else + echo "exit" + exit 1 + fi fi + +# Verify virtual environment exists if ! test -d "${VIRTUAL_ENV}/bin"; then echo "Error: directory does not exist: ${VIRTUAL_ENV}/bin" exit 1