Merge pull request #2194 from daxgames/fix_path_with!

Fix path with ! in cmder_root dir path
This commit is contained in:
Dax T Games 2019-11-01 17:19:03 -04:00 committed by GitHub
commit b70a03cde0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 234 additions and 150 deletions

View File

@ -2,10 +2,24 @@
## [Unreleased] ## [Unreleased]
* Update Clink Completions to 0.3.4 ## [1.3.13](https://github.com/cmderdev/cmder/tree/v1.3.12) (2019-10-27)
* Fix powershell foreground color changing to green
## [1.3.12](https://github.com/cmderdev/cmder/tree/v1.3.11) (2019-08-18) ### Adds
* #2174 `--` Syntax to pass command line options to Conemu.
* Disable Clink Logging
* Add `~` tab completion.
### Fixes
* Fix #2192: Set default prompt hooks before loading user profile
* Fix #2097, #1899: powershell foreground color changing to green
* Fix #1979: Update Clink Completions to 0.3.4
* Fix #1678: Cmder corrupting path with `!` in Cmder folder path.
## [1.3.12](https://github.com/cmderdev/cmder/tree/v1.3.12) (2019-08-19)
### Fixes ### Fixes

View File

@ -3,13 +3,14 @@
All config files must be in this folder. If there is no option to set this folder All config files must be in this folder. If there is no option to set this folder
directly, it has to be hardlinked. directly, it has to be hardlinked.
* `user-aliases.cmd`: aliases in cmd; called from vendor\init.bat; autocreated from * `user_aliases.cmd`: aliases in cmd; called from vendor\init.bat; autocreated from
`vendor\user-aliases.cmd.default`. `vendor\user_aliases.cmd.default`.
* `*.lua`: clink completions and prompt filters; autoloaded after all * `*.lua`: clink completions and prompt filters; autoloaded after all
prompt filter and clink completions are initialized; add your own. prompt filter and clink completions are initialized; add your own.
* `user-profile.{sh|cmd|ps1}`: startup files for bash|cmd|powershell tasks; called from their * `user_profile.{sh|cmd|ps1}`: startup files for bash|cmd|powershell tasks; called from their
respective startup scripts in `vendor\`; autocreated from respective startup scripts in `vendor\`; autocreated from
`vendor\user-profile.{sh|cmd|ps1}.default` on first start of such a task. `vendor\user_profile.{sh|cmd|ps1}.default` on first start of such a task.
* `.history`: the current commandline history; autoupdated on close. * `.history`: the current commandline history; autoupdated on close.
* `settings`: settings for readline; overwritten on update. * `settings`: settings for readline; overwritten on update.
* `ConEmu.xml`: settings from ConEmu (=the UI of cmder -> Preferences); overwritten on update. * `user-ConEmu.xml`: settings from ConEmu the UI of Cmder. ;
Do not edit this file directly it is overwritten on each cmder.exe launch.

17
vendor/clink.lua vendored
View File

@ -385,7 +385,24 @@ local function svn_prompt_filter()
return false return false
end 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 -- 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(set_prompt_filter, 1)
clink.prompt.register_filter(hg_prompt_filter, 50) clink.prompt.register_filter(hg_prompt_filter, 50)
clink.prompt.register_filter(git_prompt_filter, 50) clink.prompt.register_filter(git_prompt_filter, 50)

178
vendor/init.bat vendored
View File

@ -165,7 +165,6 @@ if not defined TERM set TERM=cygwin
:: * test if a git is in path and if yes, use that :: * test if a git is in path and if yes, use that
:: * last, use our vendored git :: * last, use our vendored git
:: also check that we have a recent enough version of git by examining the version string :: also check that we have a recent enough version of git by examining the version string
setlocal enabledelayedexpansion
if defined GIT_INSTALL_ROOT ( if defined GIT_INSTALL_ROOT (
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT
) else if "%fast_init%" == "1" ( ) else if "%fast_init%" == "1" (
@ -184,56 +183,15 @@ if defined GIT_INSTALL_ROOT (
:: check if git is in path... :: check if git is in path...
for /F "delims=" %%F in ('where git.exe 2^>nul') do ( for /F "delims=" %%F in ('where git.exe 2^>nul') do (
:: get the absolute path to the user provided git binary :: get the absolute path to the user provided git binary
pushd %%~dpF call :is_git_shim "%%~dpF"
:: check if there's shim - and if yes follow the path call :get_user_git_version
if exist git.shim ( call :compare_git_versions
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=
)
)
) )
:: our last hope: our own git... :: our last hope: our own git...
:VENDORED_GIT :VENDORED_GIT
if exist "%CMDER_ROOT%\vendor\git-for-windows" ( if exist "%CMDER_ROOT%\vendor\git-for-windows" (
set "GIT_INSTALL_ROOT=%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 goto :CONFIGURE_GIT
) else ( ) else (
goto :NO_GIT goto :NO_GIT
@ -244,48 +202,47 @@ if exist "%CMDER_ROOT%\vendor\git-for-windows" (
goto :CONFIGURE_GIT goto :CONFIGURE_GIT
:FOUND_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 goto :CONFIGURE_GIT
:CONFIGURE_GIT :CONFIGURE_GIT
:: Add git to the path :: 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
rem add the unix commands at the end to not shadow windows commands like more if %nix_tools% equ 1 (
if %nix_tools% equ 1 ( %lib_console% debug_output init.bat "Preferring Windows commands"
%lib_console% debug_output init.bat "Preferring Windows commands" set "path_position=append"
set "path_position=append" ) else (
) else ( %lib_console% debug_output init.bat "Preferring *nix commands"
%lib_console% debug_output init.bat "Preferring *nix commands" set "path_position="
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%\cmd\git.exe" %lib_path% enhance_path "%GIT_INSTALL_ROOT%\cmd" %path_position%
if exist "!GIT_INSTALL_ROOT!\mingw32" ( if exist "%GIT_INSTALL_ROOT%\mingw32" (
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32\bin" !path_position! %lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw32\bin" %path_position%
) else if exist "!GIT_INSTALL_ROOT!\mingw64" ( ) else if exist "%GIT_INSTALL_ROOT%\mingw64" (
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64\bin" !path_position! %lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw64\bin" %path_position%
) )
if %nix_tools% geq 1 ( if %nix_tools% geq 1 (
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" !path_position! %lib_path% enhance_path "%GIT_INSTALL_ROOT%\usr\bin" %path_position%
) )
:: define SVN_SSH so we can use git svn with ssh svn repositories :: 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 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.
:: 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 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 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 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
if not defined git_locale set git_locale=env /usr/bin/locale
for /F "delims=" %%F in ('!git_locale! -uU 2') do ( %lib_console% debug_output init.bat "Env Var - git_locale=%git_locale%"
set "LANG=%%F" 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 "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
%lib_console% debug_output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'" %lib_console% debug_output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'"
goto :PATH_ENHANCE goto :PATH_ENHANCE
@ -331,22 +288,11 @@ if "%CMDER_ALIASES%" == "1" (
) )
REM Make sure we have a self-extracting user_aliases.cmd file REM Make sure we have a self-extracting user_aliases.cmd file
setlocal enabledelayedexpansion
if not exist "%user_aliases%" ( if not exist "%user_aliases%" (
echo Creating initial user_aliases store in "%user_aliases%"... echo Creating initial user_aliases store in "%user_aliases%"...
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%" copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
) else ( ) else (
type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul %lib_base% update_legacy_aliases
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%"
)
)
) )
:: Update old 'user_aliases' to new self executing 'user_aliases.cmd' :: 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%" type "%user_aliases%.old_format" >> "%user_aliases%"
del "%user_aliases%.old_format" del "%user_aliases%.old_format"
) )
endlocal
) )
:: Add aliases to the environment :: 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% "%cmder_root%\vendor\bin\timer.cmd" %CMDER_INIT_START% %CMDER_INIT_END%
) )
exit /b 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

View File

@ -66,16 +66,29 @@ exit /b
echo %comspec% | %WINDIR%\System32\find /i "\tccle" > nul && set "CMDER_SHELL=tccle" echo %comspec% | %WINDIR%\System32\find /i "\tccle" > nul && set "CMDER_SHELL=tccle"
if not defined CMDER_CLINK ( if not defined CMDER_CLINK (
set CMDER_CLINK=1 set CMDER_CLINK=1
if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0 if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0
if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0 if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0
) )
if not defined CMDER_ALIASES ( if not defined CMDER_ALIASES (
set CMDER_ALIASES=1 set CMDER_ALIASES=1
if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0 if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0
if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0 if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0
) )
exit /b 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

View File

@ -34,7 +34,6 @@ exit /b
::: GIT_VERSION_[GIT SCOPE] <out> Env variable containing Git semantic version string ::: GIT_VERSION_[GIT SCOPE] <out> Env variable containing Git semantic version string
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
setlocal enabledelayedexpansion
:: clear the variables :: clear the variables
set GIT_VERSION_%~1= set GIT_VERSION_%~1=
@ -49,18 +48,20 @@ exit /b
) )
:: get the git version in the provided directory :: 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" ( if /i "%%A %%B" == "git version" (
set "GIT_VERSION=%%C" set "GIT_VERSION=%%C"
%lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=!GIT_VERSION!"
) else ( ) else (
%lib_console% show_error "git --version" returned an inproper version string! echo "'git --version' returned an inproper version string!"
pause pause
exit /b 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 exit /b
:parse_version :parse_version
@ -89,11 +90,9 @@ exit /b
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
:: process a `x.x.x.xxxx.x` formatted string :: 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" %lib_console% debug_output :parse_version "ARGV[1]=%~1, ARGV[2]=%~2"
setlocal enabledelayedexpansion
for /F "tokens=1-3* delims=.,-" %%A in ("%2") do ( for /F "tokens=1-3* delims=.,-" %%A in ("%2") do (
set "%~1_MAJOR=%%A" set "%~1_MAJOR=%%A"
set "%~1_MINOR=%%B" set "%~1_MINOR=%%B"
@ -101,8 +100,17 @@ exit /b
set "%~1_BUILD=%%D" 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 exit /b
:endlocal_set_git_version
:validate_version :validate_version
:::=============================================================================== :::===============================================================================
:::validate_version - Validate semantic version string 'x.x.x.x'. :::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 :: now parse the version information into the corresponding variables
%lib_console% debug_output :validate_version "ARGV[1]=%~1, ARGV[2]=%~2" %lib_console% debug_output :validate_version "ARGV[1]=%~1, ARGV[2]=%~2"
call :parse_version %~1 %~2 call :parse_version %~1 %~2
:: ... and maybe display it, for debugging purposes. :: ... 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 exit /b
:compare_versions :compare_versions
@ -151,20 +165,21 @@ exit /b
:: whichever binary that has the most recent version will be used based on the return code. :: 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 Comparing:
%lib_console% debug_output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! %lib_console% debug_output %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%
%lib_console% debug_output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD! %lib_console% debug_output %~2: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%
if !%~1_MAJOR! GTR !%~2_MAJOR! (exit /b 1) setlocal enabledelayedexpansion
if !%~1_MAJOR! LSS !%~2_MAJOR! (exit /b -1) 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! GTR !%~2_MINOR! (endlocal & exit /b 1)
if !%~1_MINOR! LSS !%~2_MINOR! (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! GTR !%~2_PATCH! (endlocal & exit /b 1)
if !%~1_PATCH! LSS !%~2_PATCH! (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! GTR !%~2_BUILD! (endlocal & exit /b 1)
if !%~1_BUILD! LSS !%~2_BUILD! (exit /b -1) if !%~1_BUILD! LSS !%~2_BUILD! (endlocal & exit /b -1)
:: looks like we have the same versions. :: looks like we have the same versions.
exit /b 0 endlocal & exit /b 0

View File

@ -38,7 +38,6 @@ exit /b
::: path <out> Sets the path env variable if required. ::: path <out> Sets the path env variable if required.
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
setlocal enabledelayedexpansion
if "%~1" neq "" ( if "%~1" neq "" (
set "add_path=%~1" set "add_path=%~1"
) else ( ) else (
@ -58,9 +57,15 @@ exit /b
) else ( ) else (
set "PATH=%add_path%;%PATH%" 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 found=0
set "find_query=%add_path%" set "find_query=%add_path%"
set "find_query=%find_query:\=\\%" set "find_query=%find_query:\=\\%"
@ -69,20 +74,22 @@ exit /b
if "%CMDER_CONFIGURED%" == "1" ( if "%CMDER_CONFIGURED%" == "1" (
%lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%" %lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%"
echo "%path%"|%WINDIR%\System32\findstr >nul /I /R ";%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" ( if "%CMDER_CONFIGURED%" == "1" (
echo "%path%"|%WINDIR%\System32\findstr >nul /i /r ";%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 2 - found=!found!" %lib_console% debug_output :enhance_path "Env Var 2 - found=%found%"
) )
if "%found%" == "0" ( 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" ( if /i "%position%" == "append" (
%lib_console% debug_output :enhance_path "Appending '%add_path%'" %lib_console% debug_output :enhance_path "Appending '%add_path%'"
set "PATH=%PATH%;%add_path%" set "PATH=%PATH%;%add_path%"
@ -91,11 +98,16 @@ exit /b
set "PATH=%add_path%;%PATH%" 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 rem :end_enhance_path
endlocal & set "PATH=%PATH:;;=;%" rem endlocal & set "PATH=%PATH:;;=;%"
set "PATH=%PATH:;;=;%"
exit /b
:set_found
if "!ERRORLEVEL!" == "0" set found=1
exit /b exit /b
:enhance_path_recursive :enhance_path_recursive
@ -125,7 +137,6 @@ exit /b
:::. :::.
::: path <out> Sets the path env variable if required. ::: path <out> Sets the path env variable if required.
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
setlocal enabledelayedexpansion
if "%~1" neq "" ( if "%~1" neq "" (
set "add_path=%~1" set "add_path=%~1"
) else ( ) else (
@ -147,28 +158,43 @@ exit /b
if "%fast_init%" == "1" ( if "%fast_init%" == "1" (
call :enhance_path "%add_path%" %position% 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 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 - add_path=%add_path%"
%lib_console% debug_output :enhance_path_recursive "Env Var - position=%position%" %lib_console% debug_output :enhance_path_recursive "Env Var - position=%position%"
%lib_console% debug_output :enhance_path_recursive "Env Var - max_depth=%max_depth%" %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%'" %lib_console% debug_output :enhance_path_recursive "Adding parent directory - '%add_path%'"
call :enhance_path "%add_path%" %position% call :enhance_path "%add_path%" %position%
set /a "depth=!depth!+1" REM set /a "depth=!depth!+1"
call :set_depth
for /d %%i in ("%add_path%\*") do ( call :loop_depth
%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!"
)
) )
:end_enhance_path_recursive rem :end_enhance_path_recursive
endlocal & set "PATH=%PATH%" rem endlocal & set "PATH=%PATH%"
set "PATH=%PATH%"
exit /b 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