Technician updater and one shared Python environment (v0.9.0)
update_windows.bat / update_macos.command: fetch release tags from Gitea, move the folder to the newest vX.Y (git downloads only what changed), connect a folder unpacked from a release zip on first run, install git/uv when missing and sync the Python libraries. Developer copies on a branch are left alone. run_* and update_* share one environment (KotaTechnicianTool/venv) instead of one per version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
724c2d62f9
commit
a33736742a
7 files changed
+188
-7
No files matched your search
@@ -0,0 +1,107 @@
|
||||
@echo off
|
||||
rem KOTA Sensorbox Technician Tool - update to the newest released version.
|
||||
rem Checks Gitea for the newest release tag (vX.Y) and downloads only what changed (git).
|
||||
rem Works in a git clone and in a folder unpacked from a release zip (it is connected on first run).
|
||||
setlocal EnableDelayedExpansion
|
||||
cd /d "%~dp0"
|
||||
title KOTA Technician Tool - update
|
||||
|
||||
if not defined KOTA_REPO_URL set "KOTA_REPO_URL=https://gitea.kota-app.com/kkallas/kota-technician-tool.git"
|
||||
set "UV_PROJECT_ENVIRONMENT=%LOCALAPPDATA%\KotaTechnicianTool\venv"
|
||||
set "PATH=%USERPROFILE%\.local\bin;%ProgramFiles%\Git\cmd;%PATH%"
|
||||
|
||||
rem ---- git ----------------------------------------------------------------
|
||||
where git >nul 2>nul
|
||||
if errorlevel 1 (
|
||||
echo Git is not installed. It is needed to download updates.
|
||||
choice /m "Install Git for Windows now"
|
||||
if errorlevel 2 goto :fail
|
||||
winget install --id Git.Git -e --source winget --accept-package-agreements
|
||||
where git >nul 2>nul
|
||||
if errorlevel 1 (
|
||||
echo [!] Git installation failed. Install it from https://git-scm.com and run this again.
|
||||
goto :fail
|
||||
)
|
||||
)
|
||||
|
||||
rem ---- connect a folder unpacked from a zip ---------------------------------
|
||||
if not exist ".git" (
|
||||
echo Connecting this folder to %KOTA_REPO_URL% ...
|
||||
git init -q || goto :fail
|
||||
git remote add origin "%KOTA_REPO_URL%" || goto :fail
|
||||
)
|
||||
|
||||
rem A developer copy follows a branch; it is updated with "git pull", not here.
|
||||
git rev-parse -q --verify HEAD >nul 2>nul
|
||||
if not errorlevel 1 (
|
||||
for /f "delims=" %%b in ('git symbolic-ref -q --short HEAD 2^>nul') do (
|
||||
echo This is a developer copy on branch %%b. Update it with: git pull
|
||||
goto :done
|
||||
)
|
||||
)
|
||||
|
||||
echo Checking for a new version...
|
||||
git fetch --quiet --force --tags origin
|
||||
if errorlevel 1 (
|
||||
echo [!] Cannot reach %KOTA_REPO_URL%.
|
||||
echo Check the Internet connection and your Gitea login, then try again.
|
||||
goto :fail
|
||||
)
|
||||
|
||||
set "LATEST="
|
||||
for /f "delims=" %%t in ('git tag -l "v*" --sort^=-v:refname') do if not defined LATEST set "LATEST=%%t"
|
||||
if not defined LATEST (
|
||||
echo [!] No released version found on the server.
|
||||
goto :fail
|
||||
)
|
||||
set "CURRENT="
|
||||
for /f "delims=" %%t in ('git describe --tags --exact-match HEAD 2^>nul') do set "CURRENT=%%t"
|
||||
|
||||
if "%CURRENT%"=="%LATEST%" (
|
||||
echo You already have the newest version %LATEST%.
|
||||
goto :deps
|
||||
)
|
||||
|
||||
if defined CURRENT (
|
||||
for /f "delims=" %%s in ('git status --porcelain --untracked-files^=no') do set "DIRTY=1"
|
||||
if defined DIRTY (
|
||||
echo Some tool files in this folder were changed by hand. They will be replaced by %LATEST%.
|
||||
choice /m "Continue"
|
||||
if errorlevel 2 goto :fail
|
||||
)
|
||||
echo Updating %CURRENT% -^> %LATEST%. Changes:
|
||||
git --no-pager log --oneline --no-decorate "%CURRENT%..%LATEST%"
|
||||
) else (
|
||||
echo Installing %LATEST%...
|
||||
)
|
||||
git -c advice.detachedHead=false checkout -q -f "%LATEST%"
|
||||
if errorlevel 1 goto :fail
|
||||
echo Now on %LATEST%.
|
||||
|
||||
rem ---- Python libraries (only what changed) ----------------------------------
|
||||
:deps
|
||||
where uv >nul 2>nul
|
||||
if errorlevel 1 (
|
||||
echo Installing uv ^(Python package runner, current user only^)...
|
||||
powershell -NoProfile -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
||||
)
|
||||
where uv >nul 2>nul
|
||||
if errorlevel 1 (
|
||||
echo [!] uv installation failed. Ask the firmware team for help.
|
||||
goto :fail
|
||||
)
|
||||
echo Checking Python libraries...
|
||||
uv sync --frozen --no-dev --python 3.12 --quiet
|
||||
if errorlevel 1 goto :fail
|
||||
echo.
|
||||
echo Done. Start the tool with run_windows.bat.
|
||||
|
||||
:done
|
||||
if not defined KOTA_NO_PAUSE pause
|
||||
exit /b 0
|
||||
|
||||
:fail
|
||||
echo.
|
||||
echo [!] Update did not finish.
|
||||
if not defined KOTA_NO_PAUSE pause
|
||||
exit /b 1
|
||||
Reference in new issue
Block a user