50 lines
1.4 KiB
Batchfile
50 lines
1.4 KiB
Batchfile
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
:: Define variables
|
|
set "SCRIPT_DIR=%~dp0"
|
|
set "EXTRACT_DIR=%SCRIPT_DIR%gitportable"
|
|
set "GIT_ARCHIVE=PortableGit.7z.exe"
|
|
set "API_URL=https://api.github.com/repos/git-for-windows/git/releases/latest"
|
|
|
|
:: Check if Git is available in the PATH
|
|
where git >nul 2>nul
|
|
if %errorlevel%==0 (
|
|
echo Git is already installed and available in PATH.
|
|
goto :EOF
|
|
)
|
|
|
|
:: Check if gitportable folder already exists
|
|
if exist "%EXTRACT_DIR%\" (
|
|
echo 'gitportable' folder already exists. Skipping download.
|
|
goto :EOF
|
|
)
|
|
|
|
:: Use PowerShell to get the download URL dynamically
|
|
echo Fetching latest Portable Git release info...
|
|
for /f "usebackq delims=" %%i in (`powershell -NoProfile -Command ^
|
|
"(Invoke-RestMethod -Uri '%API_URL%').assets | Where-Object { $_.name -like '*64-bit.7z.exe' } | Select-Object -First 1 -ExpandProperty browser_download_url"`) do (
|
|
set "GIT_URL=%%i"
|
|
)
|
|
|
|
if not defined GIT_URL (
|
|
echo Failed to find download URL from GitHub API.
|
|
exit /b 1
|
|
)
|
|
|
|
echo Downloading Portable Git from: %GIT_URL%
|
|
powershell -NoProfile -Command "Invoke-WebRequest -Uri '%GIT_URL%' -OutFile '%SCRIPT_DIR%%GIT_ARCHIVE%'"
|
|
|
|
:: Create extraction directory
|
|
mkdir "%EXTRACT_DIR%"
|
|
|
|
:: Extract Portable Git
|
|
echo Extracting Portable Git...
|
|
"%SCRIPT_DIR%%GIT_ARCHIVE%" -o"%EXTRACT_DIR%" -y
|
|
|
|
:: Cleanup
|
|
del "%SCRIPT_DIR%%GIT_ARCHIVE%"
|
|
|
|
echo Done. Portable Git is ready in: %EXTRACT_DIR%
|
|
pause
|