Files
2026-01-23 19:57:43 +00:00

104 lines
3.1 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
:: --- KONFIGURATION ---
set "REPO_URL="https://git.diggerwf.cloud/diggerwf/Brokkoli-Giess-Plannung-Helfer.git"
set "BRANCH=main"
set "START_FILE=start4.bat"
:: ---------------------
echo ===========================================
echo Projekt-Installer ^& Updater
echo ===========================================
:CHOOSE_FOLDER
echo [1/4] Ordner-Auswahl...
:: PowerShell-Dialog aufrufen
set "psCmd=Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Zielordner waehlen'; if($f.ShowDialog() -eq 'OK'){ $f.SelectedPath }"
for /f "delims=" %%I in ('powershell -ExecutionPolicy Bypass -Command "%psCmd%"') do set "TARGET_DIR=%%I"
:: Falls Fenster geschlossen wurde
if "%TARGET_DIR%"=="" (
echo [!] Abbruch: Kein Ordner gewaehlt oder Dialog geschlossen.
echo Druecke eine beliebige Taste zum Beenden...
pause
exit /b
)
echo [+] Gewaehlter Pfad: "!TARGET_DIR!"
:: WECHSEL IN DEN ORDNER (mit Anführungszeichen für Pfade mit Leerzeichen)
cd /d "!TARGET_DIR!" || (
echo [!] FEHLER: Konnte nicht in den Ordner wechseln.
pause
exit /b
)
:CHECK_GIT
echo [2/4] Pruefe Git-Status...
git --version >nul 2>&1
if %errorlevel% neq 0 (
echo [!] Git nicht gefunden. Installation wird gestartet...
winget install --id Git.Git -e --source winget --accept-package-agreements --accept-source-agreements
echo [i] Bitte das Skript nach der Installation neu starten.
pause
exit
)
:PROCESS
echo [3/4] Projekt-Verarbeitung...
if exist ".git" (
echo [+] Update-Modus: Synchronisiere...
git remote set-url origin "!REPO_URL!"
git -c credential.helper= fetch origin %BRANCH% --progress
for /f "tokens=*" %%a in ('git rev-parse HEAD') do set "LOCAL_HASH=%%a"
for /f "tokens=1" %%a in ('git ls-remote origin %BRANCH%') do set "REMOTE_HASH=%%a"
if "!LOCAL_HASH!"=="!REMOTE_HASH!" (
echo [+] Status: Alles aktuell.
) else (
echo [+] Status: Update wird heruntergeladen...
git pull origin %BRANCH% --progress
)
) else (
echo [+] Installations-Modus...
:: Prüfen ob leer
dir /a /b | findstr . >nul 2>&1
if %errorlevel% equ 0 (
:: Nicht leer
for %%F in ("%REPO_URL%") do set "DIR_NAME=%%~nF"
echo [!] Ordner nicht leer. Klone in: !DIR_NAME!
git -c credential.helper= clone -b %BRANCH% --progress "!REPO_URL!" "!DIR_NAME!"
if exist "!DIR_NAME!" cd /d "!DIR_NAME!"
) else (
:: Leer
echo [+] Klone direkt in Zielverzeichnis...
git -c credential.helper= clone -b %BRANCH% --progress "!REPO_URL!" .
)
)
:START_LOGIC
echo [4/4] Start-Check...
echo [i] Pfad: %CD%
if exist "%START_FILE%" (
echo [+] Starte %START_FILE%...
echo -------------------------------------------
call "%START_FILE%"
echo -------------------------------------------
echo Programm beendet.
pause
exit
) else (
echo.
echo [!] FEHLER: "%START_FILE%" wurde nicht gefunden.
echo [i] Inhalt von %CD%:
dir /b
echo.
echo Druecke eine beliebige Taste um zu beenden
pause
exit
)