Add fallback section for delayed expansion unavailability

Taking cue from start-ssh-agent.cmd, enhanced gitk.cmd to fallback to
the immediate expansion script if delayed expansion is unavailable.

Both script sections are the same, except for the different environment
variable delimiters. When new changes are made, both sections must be
updated correctly, taking care to use the correct delimiter (! or %) to
demarcate the environment variables. (In fact, the fallback section is
exactly the same as the original script before previous commit.)

Signed-off-by: ADTC <send2adtc@gmail.com>
This commit is contained in:
ADTC 2014-09-15 18:12:08 +08:00
Родитель a6018d3fe8
Коммит c00ce10aa3
1 изменённых файлов: 22 добавлений и 0 удалений

Просмотреть файл

@ -1,5 +1,12 @@
@rem Do not use "echo off" to not affect any child calls.
@rem Enable extensions, the `verify other 2>nul` is a trick from the setlocal help
@verify other 2>nul
@setlocal enableDelayedExpansion
@if errorlevel 1 (
@echo Unable to enable delayed expansion. Immediate expansion will be used.
@goto fallback
)
@rem Get the absolute path to the parent directory, which is assumed to be the
@rem Git installation root.
@ -10,3 +17,18 @@
@if not exist "!HOME!" @set HOME=!USERPROFILE!
@start "gitk" wish.exe "!git_install_root!\bin\gitk" -- %*
@goto end
:fallback
@rem The above script again with immediate expansion, in case delayed expansion
@rem is unavailable.
@for /F "delims=" %%I in ("%~dp0..") do @set git_install_root=%%~fI
@set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%PATH%
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
@start "gitk" wish.exe "%git_install_root%\bin\gitk" -- %*
:end
@rem End of script