summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxq114 <[email protected]>2023-05-10 00:01:33 +0800
committerxq114 <[email protected]>2023-05-10 00:01:33 +0800
commit8ecdc87d0ed33c96caeeeb973702a56a1f8f4c2a (patch)
tree92c5b939a18056c733ef76ed4433af45a0000023
parent5b258b7996411c674d255ee15194d0c78afee9de (diff)
use pushd and popd to tackle venv
-rwxr-xr-xscripts/xrepo.bat15
-rw-r--r--xmake/scripts/virtualenvs/register-virtualenvs.sh15
-rw-r--r--xmake/scripts/xrepo-hook.psm110
3 files changed, 17 insertions, 23 deletions
diff --git a/scripts/xrepo.bat b/scripts/xrepo.bat
index 7a5926cdb..5017e3275 100755
--- a/scripts/xrepo.bat
+++ b/scripts/xrepo.bat
@@ -1,4 +1,5 @@
-@set "XMAKE_EXE=xmake"
+@set "XMAKE_ROOTDIR=%~dp0"
+@set "XMAKE_EXE=%XMAKE_ROOTDIR%xmake.exe"
@if [%1]==[env] (
if [%2]==[quit] (
@@ -88,21 +89,16 @@
echo Please rerun `xrepo env %2 %3 shell` to enter the environment.
exit /B 1
) else (
+ pushd %XMAKE_ROOTDIR%
setlocal EnableDelayedExpansion
- @%XMAKE_EXE% lua --quiet private.xrepo.action.env | findstr . && (
- echo error: corrupt xmake.lua detected in the current directory^^!
- exit /B 1
- )
- @%XMAKE_EXE% lua --quiet private.xrepo.action.env
- if !errorlevel! neq 0 (
- exit /B !errorlevel!
- )
%XMAKE_EXE% lua private.xrepo.action.env.info config %3
if !errorlevel! neq 0 (
+ popd
exit /B !errorlevel!
)
@%XMAKE_EXE% lua --quiet private.xrepo.action.env.info prompt %3 1>nul
if !errorlevel! neq 0 (
+ popd
echo error: environment not found^^!
exit /B !errorlevel!
)
@@ -120,6 +116,7 @@
@"%XMAKE_EXE%" lua --quiet private.xrepo.action.env.info script.cmd %3 1>"%%i.bat"
call "%%i.bat"
)
+ popd
goto :ENDXREPO
)
)
diff --git a/xmake/scripts/virtualenvs/register-virtualenvs.sh b/xmake/scripts/virtualenvs/register-virtualenvs.sh
index 15ed63bcd..1f389b99e 100644
--- a/xmake/scripts/virtualenvs/register-virtualenvs.sh
+++ b/xmake/scripts/virtualenvs/register-virtualenvs.sh
@@ -21,6 +21,7 @@
if test "${XMAKE_ROOTDIR}"; then
export XMAKE_EXE=${XMAKE_ROOTDIR}/xmake
else
+ local -i XMAKE_ROOTDIR=~/.local/bin
export XMAKE_EXE=xmake
fi
@@ -69,22 +70,20 @@ function xrepo {
unset XMAKE_PROMPT_BACKUP
unset XMAKE_ENV_BACKUP
fi
- local currentTest="$("$XMAKE_EXE" lua --quiet private.xrepo.action.env)" || return 1
- if [ ! -z "$currentTest" ]; then
- echo "error: corrupt xmake.lua detected in the current directory!"
- return 1
- fi
- "$XMAKE_EXE" lua private.xrepo.action.env.info config $bnd || return 1
- local prompt="$("$XMAKE_EXE" lua --quiet private.xrepo.action.env.info prompt $bnd)" || return 1
+ pushd ${XMAKE_ROOTDIR} 1>/dev/null
+ "$XMAKE_EXE" lua private.xrepo.action.env.info config $bnd || (popd 1>/dev/null && return 1)
+ local prompt="$("$XMAKE_EXE" lua --quiet private.xrepo.action.env.info prompt $bnd)" || (popd 1>/dev/null && return 1)
if [ -z "${prompt+x}" ]; then
+ popd 1>/dev/null
echo "error: invalid environment!"
return 1
fi
- local activateCommand="$("$XMAKE_EXE" lua --quiet private.xrepo.action.env.info script.bash $bnd)" || return 1
+ local activateCommand="$("$XMAKE_EXE" lua --quiet private.xrepo.action.env.info script.bash $bnd)" || (popd 1>/dev/null && return 1)
export XMAKE_ENV_BACKUP="$("$XMAKE_EXE" lua private.xrepo.action.env.info envfile $bnd)"
export XMAKE_PROMPT_BACKUP="${PS1}"
"$XMAKE_EXE" lua --quiet private.xrepo.action.env.info backup.bash $bnd 1>"$XMAKE_ENV_BACKUP"
eval "$activateCommand"
+ popd 1>/dev/null
PS1="${prompt} $PS1"
else
"$XMAKE_EXE" lua private.xrepo "$@"
diff --git a/xmake/scripts/xrepo-hook.psm1 b/xmake/scripts/xrepo-hook.psm1
index b05557efa..c0a6aad94 100644
--- a/xmake/scripts/xrepo-hook.psm1
+++ b/xmake/scripts/xrepo-hook.psm1
@@ -15,12 +15,6 @@ function Enter-XrepoEnvironment {
);
begin {
- $currentTest = (& $Env:XMAKE_EXE lua --quiet private.xrepo.action.env | Out-String);
- if (-not $? -or $currentTest) {
- Write-Host "error: corrupt xmake.lua detected in the current directory!";
- Exit 1;
- }
-
$script:xrepoOldEnvs = (Get-ChildItem -Path Env:);
if (-not $bnd) {
@@ -39,8 +33,10 @@ function Enter-XrepoEnvironment {
$activateCommand = (& $Env:XMAKE_EXE lua --quiet private.xrepo.action.env.info script.powershell | Out-String);
} else {
+ Push-Location $Env:XMAKE_ROOTDIR;
& $Env:XMAKE_EXE lua private.xrepo.action.env.info config $bnd;
if (-not $?) {
+ Pop-Location;
Exit 1;
}
@@ -48,6 +44,7 @@ function Enter-XrepoEnvironment {
$xrepoPrompt = (& $Env:XMAKE_EXE lua --quiet private.xrepo.action.env.info prompt $bnd | Out-String);
$Env:XMAKE_COLORTERM = $xmakeColorTermBackup;
if (-not $xrepoPrompt.StartsWith("[")) {
+ Pop-Location;
Write-Host "error: invalid environment!";
Exit 1;
}
@@ -58,6 +55,7 @@ function Enter-XrepoEnvironment {
Write-Verbose "[xrepo env script.powershell]`n$activateCommand";
Invoke-Expression -Command $activateCommand;
+ if ($bnd) { Pop-Location; }
$Env:XMAKE_PROMPT_MODIFIER = $xrepoPrompt.Trim() + " ";
}
process {}