summaryrefslogtreecommitdiff
path: root/scripts/register-virtualenvs.sh
diff options
context:
space:
mode:
authorxq114 <[email protected]>2021-08-24 19:57:35 +0800
committerxq114 <[email protected]>2021-08-24 19:57:35 +0800
commita21ec09a71f0e4c60957b37eb61e33f1a4ae6e86 (patch)
treeed1bcc557207e8b9bafc3622aad07e26c5e16ab9 /scripts/register-virtualenvs.sh
parenta1e286a66cf7e9df8ec1cad9316386d7f2a75b33 (diff)
improve virtualenv on linux
Diffstat (limited to 'scripts/register-virtualenvs.sh')
-rw-r--r--scripts/register-virtualenvs.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/scripts/register-virtualenvs.sh b/scripts/register-virtualenvs.sh
new file mode 100644
index 000000000..13a661435
--- /dev/null
+++ b/scripts/register-virtualenvs.sh
@@ -0,0 +1,48 @@
+
+# virtual environments for *nix shell
+
+if test "${XMAKE_ROOTDIR}"; then
+ export XMAKE_EXE=${XMAKE_ROOTDIR}/xmake
+else
+ export XMAKE_EXE=xmake
+fi
+
+function xrepo {
+ if [ $# -eq 2 ] && [ "$1" = "env" ]; then
+ local cmd="${2-x}"
+ case "$cmd" in
+ shell)
+ if test "${XMAKE_PROMPT_BACKUP}"; then
+ PS1="${XMAKE_PROMPT_BACKUP}"
+ source "${XMAKE_ENV_BACKUP}" || return 1
+ unset XMAKE_PROMPT_BACKUP
+ unset XMAKE_ENV_BACKUP
+ fi
+ "$XMAKE_EXE" lua private.xrepo.action.env.info config || return 1
+ local prompt="$("$XMAKE_EXE" lua private.xrepo.action.env.info prompt)" || return 1
+ if [ -z "${prompt+x}" ]; then
+ return 1
+ fi
+ local activateCommand="$("$XMAKE_EXE" lua private.xrepo.action.env.info script.bash)" || return 1
+ export XMAKE_ENV_BACKUP="$("$XMAKE_EXE" lua private.xrepo.action.env.info envfile)"
+ export XMAKE_PROMPT_BACKUP="${PS1}"
+ "$XMAKE_EXE" lua private.xrepo.action.env.info backup.bash 1>"$XMAKE_ENV_BACKUP"
+ eval "$activateCommand"
+ PS1="${prompt} $PS1"
+ ;;
+ quit)
+ if test "${XMAKE_PROMPT_BACKUP}"; then
+ PS1="${XMAKE_PROMPT_BACKUP}"
+ source "${XMAKE_ENV_BACKUP}" || return 1
+ unset XMAKE_PROMPT_BACKUP
+ unset XMAKE_ENV_BACKUP
+ fi
+ ;;
+ *)
+ "$XMAKE_EXE" lua private.xrepo $@
+ ;;
+ esac
+ else
+ "$XMAKE_EXE" lua private.xrepo $@
+ fi
+}