gh-112507: Detect Cygwin and MSYS with `uname` instead of `$OSTYPE` (GH-112508)

Detect Cygwin and MSYS with `uname` instead of `$OSTYPE`

`$OSTYPE` is not defined by POSIX and may not be present in other shells.
`uname` is always available in any shell.
This commit is contained in:
James Morris 2023-12-11 12:27:15 -05:00 committed by GitHub
parent f4fe65e2dd
commit d7b5f10231
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 8 deletions

View File

@ -36,14 +36,18 @@ deactivate () {
deactivate nondestructive deactivate nondestructive
# on Windows, a path can contain colons and backslashes and has to be converted: # on Windows, a path can contain colons and backslashes and has to be converted:
if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then case "$(uname)" in
CYGWIN*|MSYS*)
# transform D:\path\to\venv to /d/path/to/venv on MSYS # transform D:\path\to\venv to /d/path/to/venv on MSYS
# and to /cygdrive/d/path/to/venv on Cygwin # and to /cygdrive/d/path/to/venv on Cygwin
export VIRTUAL_ENV=$(cygpath "__VENV_DIR__") VIRTUAL_ENV=$(cygpath "__VENV_DIR__")
else export VIRTUAL_ENV
;;
*)
# use the path as-is # use the path as-is
export VIRTUAL_ENV="__VENV_DIR__" export VIRTUAL_ENV="__VENV_DIR__"
fi ;;
esac
_OLD_VIRTUAL_PATH="$PATH" _OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/__VENV_BIN_NAME__:$PATH" PATH="$VIRTUAL_ENV/__VENV_BIN_NAME__:$PATH"