| @echo off | |
| setlocal | |
| if not "%~1"=="" set GIT_HOME=%~f1 | |
| if "%GIT_HOME%"=="" call :FindGitHome "git.cmd" | |
| if exist "%GIT_HOME%" goto :GitHomeOK | |
| echo MsysGit installation directory not found.>&2 | |
| echo Try to give the directory name on the command line:>&2 | |
| echo %0 "%ProgramFiles%\Git" | |
| endlocal | |
| exit /B 1 | |
| :GitHomeOK | |
| set ERR=0 | |
| echo Installing gitflow into "%GIT_HOME%"... | |
| call :ChkGetopt getopt.exe || set ERR=1 | |
| if %ERR%==1 goto :End | |
| echo getopt.exe... Found | |
| if not exist "%GIT_HOME%\bin\git-flow" goto :Install | |
| echo GitFlow is already installed.>&2 | |
| choice /C YN /M "Do you want to replace it" | |
| if errorlevel 255 goto :Abort | |
| if errorlevel 2 goto :Abort | |
| if not errorlevel 1 goto :Abort | |
| echo Deleting old files... | |
| for /F %%i in ("%GIT_HOME%\git-flow*" "%GIT_HOME%\gitflow-*") do if exist "%%~fi" del /F /Q "%%~fi" | |
| :Install | |
| echo Copying files... | |
| ::goto :EOF | |
| xcopy "%~dp0\..\git-flow" "%GIT_HOME%\bin" /Y /R /F | |
| if errorlevel 4 if not errorlevel 5 goto :AccessDenied | |
| if errorlevel 1 set ERR=1 | |
| xcopy "%~dp0\..\git-flow*" "%GIT_HOME%\bin" /Y /R /F || set ERR=1 | |
| xcopy "%~dp0\..\gitflow-*" "%GIT_HOME%\bin" /Y /R /F || set ERR=1 | |
| xcopy "%~dp0\..\shFlags\src\shflags" "%GIT_HOME%\bin\gitflow-shFlags" /Y /R /F || set ERR=1 | |
| if %ERR%==1 choice /T 30 /C Y /D Y /M "Some unexpected errors happened. Sorry, you'll have to fix them by yourself." | |
| :End | |
| endlocal & exit /B %ERR% | |
| goto :EOF | |
| :AccessDenied | |
| set ERR=1 | |
| echo. | |
| echo You should run this script with "Full Administrator" rights:>&2 | |
| echo - Right-click with Shift on the script from the Explorer>&2 | |
| echo - Select "Run as administrator">&2 | |
| choice /T 30 /C YN /D Y /N >nul | |
| goto :End | |
| :Abort | |
| echo Installation canceled.>&2 | |
| set ERR=1 | |
| goto :End | |
| :ChkGetopt | |
| :: %1 is getopt.exe | |
| if exist "%GIT_HOME%\bin\%1" goto :EOF | |
| if exist "%~f$PATH:1" goto :EOF | |
| echo %GIT_HOME%\bin\%1 not found.>&2 | |
| echo You have to install this file manually. See the GitFlow README. | |
| exit /B 1 | |
| :FindGitHome | |
| setlocal | |
| set GIT_CMD_DIR=%~dp$PATH:1 | |
| if "%GIT_CMD_DIR%"=="" endlocal & goto :EOF | |
| endlocal & set GIT_HOME=%GIT_CMD_DIR:~0,-5% | |
| goto :EOF |