diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c1ae30..87c3cca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ * Update Clink Completions to 0.3.4 * Fix powershell foreground color changing to green -## [1.3.12](https://github.com/cmderdev/cmder/tree/v1.3.11) (2019-08-18) +## [1.3.12](https://github.com/cmderdev/cmder/tree/v1.3.12) (2019-08-18) ### Fixes diff --git a/vendor/clink.lua b/vendor/clink.lua index d39a5ac..5e47246 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -385,7 +385,24 @@ local function svn_prompt_filter() return false end +local function tilde_match (text, f, l) + if text == '~' then + clink.add_match(clink.get_env('userprofile')) + clink.matches_are_files() + return true + end + + if text:sub(1, 1) == '~' then + clink.add_match(string.gsub(text, "~", clink.get_env('userprofile'), 1)) + -- second match prevents adding a space so we can look for more matches + clink.add_match(string.gsub(text, "~", clink.get_env('userprofile'), 1) .. '+') + clink.matches_are_files() + return true + end +end + -- insert the set_prompt at the very beginning so that it runs first +clink.register_match_generator(tilde_match, 1) clink.prompt.register_filter(set_prompt_filter, 1) clink.prompt.register_filter(hg_prompt_filter, 50) clink.prompt.register_filter(git_prompt_filter, 50) diff --git a/vendor/init.bat b/vendor/init.bat index c91fa33..fd7ef4e 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -165,7 +165,6 @@ if not defined TERM set TERM=cygwin :: * test if a git is in path and if yes, use that :: * last, use our vendored git :: also check that we have a recent enough version of git by examining the version string -setlocal enabledelayedexpansion if defined GIT_INSTALL_ROOT ( if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT ) else if "%fast_init%" == "1" ( @@ -184,56 +183,15 @@ if defined GIT_INSTALL_ROOT ( :: check if git is in path... for /F "delims=" %%F in ('where git.exe 2^>nul') do ( :: get the absolute path to the user provided git binary - pushd %%~dpF - :: check if there's shim - and if yes follow the path - if exist git.shim ( - for /F "tokens=2 delims== " %%I in (git.shim) do ( - pushd %%~dpI - set "test_dir=!CD!" - popd - ) - ) else ( - set "test_dir=!CD!" - ) - popd - - :: get the version information for the user provided git binary - %lib_git% read_version USER "!test_dir!" - %lib_git% validate_version USER !GIT_VERSION_USER! - - if !errorlevel! geq 0 ( - :: compare the user git version against the vendored version - %lib_git% compare_versions USER VENDORED - - :: use the user provided git if its version is greater than, or equal to the vendored git - if !errorlevel! geq 0 if exist "!test_dir:~0,-4!\cmd\git.exe" ( - set "GIT_INSTALL_ROOT=!test_dir:~0,-4!" - set test_dir= - goto :FOUND_GIT - ) else if !errorlevel! geq 0 ( - set "GIT_INSTALL_ROOT=!test_dir!" - set test_dir= - goto :FOUND_GIT - ) else ( - call :verbose_output Found old !GIT_VERSION_USER! in "!test_dir!", but not using... - set test_dir= - ) - ) else ( - - :: if the user provided git executable is not found - if !errorlevel! equ -255 ( - call :verbose_output No git at "!git_executable!" found. - set test_dir= - ) - - ) + call :is_git_shim "%%~dpF" + call :get_user_git_version + call :compare_git_versions ) -:: our last hope: our own git... + :VENDORED_GIT if exist "%CMDER_ROOT%\vendor\git-for-windows" ( set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows" - %lib_console% debug_output "Using vendored Git '!GIT_VERSION_VENDORED!' from '!GIT_INSTALL_ROOT!..." goto :CONFIGURE_GIT ) else ( goto :NO_GIT @@ -244,48 +202,47 @@ if exist "%CMDER_ROOT%\vendor\git-for-windows" ( goto :CONFIGURE_GIT :FOUND_GIT -%lib_console% debug_output "Using found Git '!GIT_VERSION_USER!' from '%GIT_INSTALL_ROOT%..." +%lib_console% debug_output "Using found Git '%GIT_VERSION_USER%' from '%GIT_INSTALL_ROOT%..." goto :CONFIGURE_GIT :CONFIGURE_GIT :: Add git to the path -if defined GIT_INSTALL_ROOT ( - rem add the unix commands at the end to not shadow windows commands like more - if %nix_tools% equ 1 ( - %lib_console% debug_output init.bat "Preferring Windows commands" - set "path_position=append" - ) else ( - %lib_console% debug_output init.bat "Preferring *nix commands" - set "path_position=" - ) +rem add the unix commands at the end to not shadow windows commands like more +if %nix_tools% equ 1 ( + %lib_console% debug_output init.bat "Preferring Windows commands" + set "path_position=append" +) else ( + %lib_console% debug_output init.bat "Preferring *nix commands" + set "path_position=" +) - if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" !path_position! - if exist "!GIT_INSTALL_ROOT!\mingw32" ( - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32\bin" !path_position! - ) else if exist "!GIT_INSTALL_ROOT!\mingw64" ( - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64\bin" !path_position! - ) +if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" %lib_path% enhance_path "%GIT_INSTALL_ROOT%\cmd" %path_position% +if exist "%GIT_INSTALL_ROOT%\mingw32" ( + %lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw32\bin" %path_position% +) else if exist "%GIT_INSTALL_ROOT%\mingw64" ( + %lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw64\bin" %path_position% +) - if %nix_tools% geq 1 ( - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" !path_position! - ) +if %nix_tools% geq 1 ( + %lib_path% enhance_path "%GIT_INSTALL_ROOT%\usr\bin" %path_position% +) - :: define SVN_SSH so we can use git svn with ssh svn repositories - if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe" - - if not defined LANG ( - :: Find locale.exe: From the git install root, from the path, using the git installed env, or fallback using the env from the path. - if not defined git_locale if exist "!GIT_INSTALL_ROOT!\usr\bin\locale.exe" set git_locale="!GIT_INSTALL_ROOT!\usr\bin\locale.exe" - if not defined git_locale for /F "delims=" %%F in ('where locale.exe 2^>nul') do (if not defined git_locale set git_locale="%%F") - if not defined git_locale if exist "!GIT_INSTALL_ROOT!\usr\bin\env.exe" set git_locale="!GIT_INSTALL_ROOT!\usr\bin\env.exe" /usr/bin/locale - if not defined git_locale set git_locale=env /usr/bin/locale - for /F "delims=" %%F in ('!git_locale! -uU 2') do ( - set "LANG=%%F" - ) +:: define SVN_SSH so we can use git svn with ssh svn repositories +if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe" + +:: Find locale.exe: From the git install root, from the path, using the git installed env, or fallback using the env from the path. +if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\locale.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\locale.exe" +if not defined git_locale for /F "delims=" %%F in ('where locale.exe 2^>nul') do (if not defined git_locale set git_locale="%%F") +if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\env.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\env.exe" /usr/bin/locale +if not defined git_locale set git_locale=env /usr/bin/locale + +%lib_console% debug_output init.bat "Env Var - git_locale=%git_locale%" +if not defined LANG ( + for /F "delims=" %%F in ('%git_locale% -uU 2') do ( + set "LANG=%%F" ) ) -endlocal & set "PATH=%PATH%" & set "LANG=%LANG%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" %lib_console% debug_output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" %lib_console% debug_output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'" goto :PATH_ENHANCE @@ -331,22 +288,11 @@ if "%CMDER_ALIASES%" == "1" ( ) REM Make sure we have a self-extracting user_aliases.cmd file - setlocal enabledelayedexpansion if not exist "%user_aliases%" ( echo Creating initial user_aliases store in "%user_aliases%"... copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%" ) else ( - type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul - if "!errorlevel!" == "1" ( - echo Creating initial user_aliases store in "%user_aliases%"... - if defined CMDER_USER_CONFIG ( - copy "%user_aliases%" "%user_aliases%.old_format" - copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%" - ) else ( - copy "%user_aliases%" "%user_aliases%.old_format" - copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%" - ) - ) + %lib_base% update_legacy_aliases ) :: Update old 'user_aliases' to new self executing 'user_aliases.cmd' @@ -359,7 +305,6 @@ if "%CMDER_ALIASES%" == "1" ( type "%user_aliases%.old_format" >> "%user_aliases%" del "%user_aliases%.old_format" ) - endlocal ) :: Add aliases to the environment @@ -422,3 +367,56 @@ if %time_init% gtr 0 ( "%cmder_root%\vendor\bin\timer.cmd" %CMDER_INIT_START% %CMDER_INIT_END% ) exit /b + +:is_git_shim + pushd "%~1" + :: check if there's shim - and if yes follow the path + setlocal enabledelayedexpansion + if exist git.shim ( + for /F "tokens=2 delims== " %%I in (git.shim) do ( + pushd %%~dpI + set "test_dir=!CD!" + popd + ) + ) else ( + set "test_dir=!CD!" + ) + endlocal & set "test_dir=%test_dir%" + + popd + exit /b + +:compare_git_versions + if %errorlevel% geq 0 ( + :: compare the user git version against the vendored version + %lib_git% compare_versions USER VENDORED + + :: use the user provided git if its version is greater than, or equal to the vendored git + if %errorlevel% geq 0 if exist "%test_dir:~0,-4%\cmd\git.exe" ( + set "GIT_INSTALL_ROOT=%test_dir:~0,-4%" + set test_dir= + goto :FOUND_GIT + ) else if %errorlevel% geq 0 ( + set "GIT_INSTALL_ROOT=%test_dir%" + set test_dir= + goto :FOUND_GIT + ) else ( + call :verbose_output Found old %GIT_VERSION_USER% in "%test_dir%", but not using... + set test_dir= + ) + ) else ( + :: if the user provided git executable is not found + if %errorlevel% equ -255 ( + call :verbose_output No git at "%git_executable%" found. + set test_dir= + ) + ) + exit /b + +:get_user_git_version + + :: get the version information for the user provided git binary + %lib_git% read_version USER "%test_dir%" + %lib_git% validate_version USER %GIT_VERSION_USER% + exit /b + diff --git a/vendor/lib/lib_base.cmd b/vendor/lib/lib_base.cmd index ac8d034..154dee3 100644 --- a/vendor/lib/lib_base.cmd +++ b/vendor/lib/lib_base.cmd @@ -65,17 +65,26 @@ exit /b echo %comspec% | %WINDIR%\System32\find /i "\tcc.exe" > nul && set "CMDER_SHELL=tcc" echo %comspec% | %WINDIR%\System32\find /i "\tccle" > nul && set "CMDER_SHELL=tccle" - if not defined CMDER_CLINK ( - set CMDER_CLINK=1 - if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0 - if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0 - ) + set CMDER_CLINK=1 + if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0 + if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0 - - if not defined CMDER_ALIASES ( - set CMDER_ALIASES=1 - if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0 - if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0 - ) + set CMDER_ALIASES=1 + if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0 + if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0 exit /b + +:update_legacy_aliases + type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul + if "%errorlevel%" == "1" ( + echo Creating initial user_aliases store in "%user_aliases%"... + if defined CMDER_USER_CONFIG ( + copy "%user_aliases%" "%user_aliases%.old_format" + copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%" + ) else ( + copy "%user_aliases%" "%user_aliases%.old_format" + copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%" + ) + ) + exit /b diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index 02f156b..3f4cdef 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -34,7 +34,6 @@ exit /b ::: GIT_VERSION_[GIT SCOPE] Env variable containing Git semantic version string :::------------------------------------------------------------------------------- - setlocal enabledelayedexpansion :: clear the variables set GIT_VERSION_%~1= @@ -49,18 +48,20 @@ exit /b ) :: get the git version in the provided directory - for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do ( + + "%git_executable%" --version > "%temp%\git_version.txt" + setlocal enabledelayedexpansion + for /F "tokens=1,2,3 usebackq" %%A in (`type "%temp%\git_version.txt" 2^>nul`) do ( if /i "%%A %%B" == "git version" ( set "GIT_VERSION=%%C" - %lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=!GIT_VERSION!" ) else ( - %lib_console% show_error "git --version" returned an inproper version string! + echo "'git --version' returned an inproper version string!" pause exit /b ) ) + endlocal & set "GIT_VERSION_%~1=%GIT_VERSION%" & %lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=%GIT_VERSION%" - endlocal & set "GIT_VERSION_%~1=%GIT_VERSION%" exit /b :parse_version @@ -89,11 +90,9 @@ exit /b :::------------------------------------------------------------------------------- :: process a `x.x.x.xxxx.x` formatted string - set "%~1_MAJOR=" - set "%~1_MINOR=" - set "%~1_PATCH=" - set "%~1_BUILD=" %lib_console% debug_output :parse_version "ARGV[1]=%~1, ARGV[2]=%~2" + + setlocal enabledelayedexpansion for /F "tokens=1-3* delims=.,-" %%A in ("%2") do ( set "%~1_MAJOR=%%A" set "%~1_MINOR=%%B" @@ -101,8 +100,17 @@ exit /b set "%~1_BUILD=%%D" ) + REM endlocal & set "%~1_MAJOR=!%~1_MAJOR!" & set "%~1_MINOR=!%~1_MINOR!" & set "%~1_PATCH=!%~1_PATCH!" & set "%~1_BUILD=!%~1_BUILD!" + if "%~1" == "VENDORED" ( + endlocal & set "%~1_MAJOR=%VENDORED_MAJOR%" & set "%~1_MINOR=%VENDORED_MINOR%" & set "%~1_PATCH=%VENDORED_PATCH%" & set "%~1_BUILD=%VENDORED_BUILD%" + ) else ( + endlocal & set "%~1_MAJOR=%USER_MAJOR%" & set "%~1_MINOR=%USER_MINOR%" & set "%~1_PATCH=%USER_PATCH%" & set "%~1_BUILD=%USER_BUILD%" + ) + exit /b +:endlocal_set_git_version + :validate_version :::=============================================================================== :::validate_version - Validate semantic version string 'x.x.x.x'. @@ -123,10 +131,16 @@ exit /b :: now parse the version information into the corresponding variables %lib_console% debug_output :validate_version "ARGV[1]=%~1, ARGV[2]=%~2" + call :parse_version %~1 %~2 :: ... and maybe display it, for debugging purposes. - %lib_console% debug_output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!" + REM %lib_console% debug_output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!" + if "%~1" == "VENDORED" ( + %lib_console% debug_output :validate_version "Found Git Version for %~1: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%" + ) else ( + %lib_console% debug_output :validate_version "Found Git Version for %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%" + ) exit /b :compare_versions @@ -151,20 +165,21 @@ exit /b :: whichever binary that has the most recent version will be used based on the return code. %lib_console% debug_output Comparing: - %lib_console% debug_output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! - %lib_console% debug_output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD! + %lib_console% debug_output %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD% + %lib_console% debug_output %~2: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD% - if !%~1_MAJOR! GTR !%~2_MAJOR! (exit /b 1) - if !%~1_MAJOR! LSS !%~2_MAJOR! (exit /b -1) + setlocal enabledelayedexpansion + if !%~1_MAJOR! GTR !%~2_MAJOR! (endlocal & exit /b 1) + if !%~1_MAJOR! LSS !%~2_MAJOR! (endlocal & exit /b -1) - if !%~1_MINOR! GTR !%~2_MINOR! (exit /b 1) - if !%~1_MINOR! LSS !%~2_MINOR! (exit /b -1) + if !%~1_MINOR! GTR !%~2_MINOR! (endlocal & exit /b 1) + if !%~1_MINOR! LSS !%~2_MINOR! (endlocal & exit /b -1) - if !%~1_PATCH! GTR !%~2_PATCH! (exit /b 1) - if !%~1_PATCH! LSS !%~2_PATCH! (exit /b -1) + if !%~1_PATCH! GTR !%~2_PATCH! (endlocal & exit /b 1) + if !%~1_PATCH! LSS !%~2_PATCH! (endlocal & exit /b -1) - if !%~1_BUILD! GTR !%~2_BUILD! (exit /b 1) - if !%~1_BUILD! LSS !%~2_BUILD! (exit /b -1) + if !%~1_BUILD! GTR !%~2_BUILD! (endlocal & exit /b 1) + if !%~1_BUILD! LSS !%~2_BUILD! (endlocal & exit /b -1) :: looks like we have the same versions. - exit /b 0 + endlocal & exit /b 0 diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index 6e31560..8f7188c 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -38,7 +38,6 @@ exit /b ::: path Sets the path env variable if required. :::------------------------------------------------------------------------------- - setlocal enabledelayedexpansion if "%~1" neq "" ( set "add_path=%~1" ) else ( @@ -58,9 +57,15 @@ exit /b ) else ( set "PATH=%add_path%;%PATH%" ) - goto :end_enhance_path ) + set "PATH=%PATH:;;=;%" + if "%fast_init%" == "1" ( + exit /b + ) + + rem setlocal enabledelayedexpansion + set found=0 set "find_query=%add_path%" set "find_query=%find_query:\=\\%" @@ -69,20 +74,22 @@ exit /b if "%CMDER_CONFIGURED%" == "1" ( %lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%" echo "%path%"|%WINDIR%\System32\findstr >nul /I /R ";%find_query%\"$" - if "!ERRORLEVEL!" == "0" set found=1 + REM if "!ERRORLEVEL!" == "0" set found=1 + call :set_found ) - %lib_console% debug_output :enhance_path "Env Var 1 - found=!found!" + %lib_console% debug_output :enhance_path "Env Var 1 - found=%found%" - if "!found!" == "0" ( + if "%found%" == "0" ( if "%CMDER_CONFIGURED%" == "1" ( echo "%path%"|%WINDIR%\System32\findstr >nul /i /r ";%find_query%;" - if "!ERRORLEVEL!" == "0" set found=1 + REM if "!ERRORLEVEL!" == "0" set found=1 + call :set_found ) - %lib_console% debug_output :enhance_path "Env Var 2 - found=!found!" + %lib_console% debug_output :enhance_path "Env Var 2 - found=%found%" ) if "%found%" == "0" ( - %lib_console% debug_output :enhance_path "BEFORE Env Var - PATH=!path!" + %lib_console% debug_output :enhance_path "BEFORE Env Var - PATH=%path%" if /i "%position%" == "append" ( %lib_console% debug_output :enhance_path "Appending '%add_path%'" set "PATH=%PATH%;%add_path%" @@ -91,11 +98,16 @@ exit /b set "PATH=%add_path%;%PATH%" ) - %lib_console% debug_output :enhance_path "AFTER Env Var - PATH=!path!" + %lib_console% debug_output :enhance_path "AFTER Env Var - PATH=%path%" ) - :end_enhance_path - endlocal & set "PATH=%PATH:;;=;%" + rem :end_enhance_path + rem endlocal & set "PATH=%PATH:;;=;%" + set "PATH=%PATH:;;=;%" + exit /b + +:set_found + if "!ERRORLEVEL!" == "0" set found=1 exit /b :enhance_path_recursive @@ -125,7 +137,6 @@ exit /b :::. ::: path Sets the path env variable if required. :::------------------------------------------------------------------------------- - setlocal enabledelayedexpansion if "%~1" neq "" ( set "add_path=%~1" ) else ( @@ -147,28 +158,43 @@ exit /b if "%fast_init%" == "1" ( call :enhance_path "%add_path%" %position% - goto :end_enhance_path_recursive ) + set "PATH=%PATH:;;=;%" + if "%fast_init%" == "1" ( + exit /b + ) + + rem setlocal enabledelayedexpansion if "%depth%" == "" set depth=0 %lib_console% debug_output :enhance_path_recursive "Env Var - add_path=%add_path%" %lib_console% debug_output :enhance_path_recursive "Env Var - position=%position%" %lib_console% debug_output :enhance_path_recursive "Env Var - max_depth=%max_depth%" - if %max_depth% gtr !depth! ( + if %max_depth% gtr %depth% ( %lib_console% debug_output :enhance_path_recursive "Adding parent directory - '%add_path%'" call :enhance_path "%add_path%" %position% - set /a "depth=!depth!+1" - - for /d %%i in ("%add_path%\*") do ( - %lib_console% debug_output :enhance_path_recursive "Env Var BEFORE - depth=!depth!" - %lib_console% debug_output :enhance_path_recursive "Found Subdirectory - '%%~fi'" - call :enhance_path_recursive "%%~fi" %max_depth% %position% - %lib_console% debug_output :enhance_path_recursive "Env Var AFTER- depth=!depth!" - ) + REM set /a "depth=!depth!+1" + call :set_depth + call :loop_depth ) - :end_enhance_path_recursive - endlocal & set "PATH=%PATH%" + rem :end_enhance_path_recursive + rem endlocal & set "PATH=%PATH%" + set "PATH=%PATH%" exit /b + +: set_depth + set /a "depth=%depth%+1" + exit /b + +:loop_depth + for /d %%i in ("%add_path%\*") do ( + %lib_console% debug_output :enhance_path_recursive "Env Var BEFORE - depth=%depth%" + %lib_console% debug_output :enhance_path_recursive "Found Subdirectory - '%%~fi'" + call :enhance_path_recursive "%%~fi" %max_depth% %position% + %lib_console% debug_output :enhance_path_recursive "Env Var AFTER- depth=%depth%" + ) + exit /b +