131 lines
1.9 KiB
Batchfile
131 lines
1.9 KiB
Batchfile
@echo off
|
|
setlocal EnableDelayedExpansion
|
|
|
|
set "LuaExe=lua"
|
|
set "LuaScript=%~dp0z.lua"
|
|
set "MatchType=-n"
|
|
set "StrictSub=-n"
|
|
set "RunMode=-n"
|
|
set "StripMode="
|
|
set "InterMode="
|
|
|
|
if /i not "%_ZL_LUA_EXE%"=="" (
|
|
set "LuaExe=%_ZL_LUA_EXE%"
|
|
)
|
|
|
|
|
|
:parse
|
|
|
|
if /i "%1"=="-r" (
|
|
set "MatchType=-r"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if /i "%1"=="-t" (
|
|
set "MatchType=-t"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if /i "%1"=="-c" (
|
|
set "StrictSub=-c"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if /i "%1"=="-l" (
|
|
set "RunMode=-l"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if /i "%1"=="-e" (
|
|
set "RunMode=-e"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if /i "%1"=="-x" (
|
|
set "RunMode=-x"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if /i "%1"=="--add" (
|
|
set "RunMode=--add"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if "%1"=="-i" (
|
|
set "InterMode=-i"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if "%1"=="-I" (
|
|
set "InterMode=-I"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if /i "%1"=="-s" (
|
|
set "StripMode=-s"
|
|
shift /1
|
|
goto parse
|
|
)
|
|
|
|
if /i "%1"=="-h" (
|
|
call "%LuaExe%" "%LuaScript%" -h
|
|
goto end
|
|
)
|
|
|
|
if /i "%1"=="--purge" (
|
|
call "%LuaExe%" "%LuaScript%" --purge
|
|
goto end
|
|
)
|
|
|
|
:check
|
|
|
|
if /i "%1"=="" (
|
|
set "RunMode=-l"
|
|
)
|
|
|
|
for /f "delims=" %%i in ('cd') do set "PWD=%%i"
|
|
|
|
if /i "%RunMode%"=="-n" (
|
|
for /f "delims=" %%i in ('call "%LuaExe%" "%LuaScript%" --cd %MatchType% %StrictSub% %InterMode% %*') do set "NewPath=%%i"
|
|
if not "!NewPath!"=="" (
|
|
if exist !NewPath!\nul (
|
|
if /i not "%_ZL_ECHO%"=="" (
|
|
echo !NewPath!
|
|
)
|
|
pushd !NewPath!
|
|
pushd !NewPath!
|
|
endlocal
|
|
goto popdir
|
|
)
|
|
)
|
|
) else (
|
|
call "%LuaExe%" "%LuaScript%" "%RunMode%" %MatchType% %StrictSub% %InterMode% %StripMode% %*
|
|
)
|
|
|
|
goto end
|
|
|
|
:popdir
|
|
rem -- Exploits variable expansion and the pushd stack to set the current
|
|
rem -- directory without leaking a pushd.
|
|
popd
|
|
setlocal
|
|
set "NewPath=%CD%"
|
|
set "CDCmd=cd /d"
|
|
if /i not "%_ZL_CD%"=="" (
|
|
set "CDCmd=%_ZL_CD%"
|
|
)
|
|
endlocal & popd & %CDCmd% "%NewPath%"
|
|
|
|
:end
|
|
echo.
|
|
|