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
Executable
+74
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
# KOTA Sensorbox Technician Tool - update to the newest released version.
|
||||
# Checks Gitea for the newest release tag (vX.Y) and downloads only what changed (git).
|
||||
# Works in a git clone and in a folder unpacked from a release zip (it is connected on first run).
|
||||
# If Finder refuses to open this file, run it once as: bash update_macos.command
|
||||
cd "$(dirname "$0")" || exit 1
|
||||
|
||||
REPO_URL="${KOTA_REPO_URL:-https://gitea.kota-app.com/kkallas/kota-technician-tool.git}"
|
||||
export UV_PROJECT_ENVIRONMENT="${UV_PROJECT_ENVIRONMENT:-$HOME/Library/Caches/KotaTechnicianTool/venv}"
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
|
||||
finish() {
|
||||
[ -z "$KOTA_NO_PAUSE" ] && [ -t 0 ] && read -r -p "Press Enter to close..." _
|
||||
exit "$1"
|
||||
}
|
||||
fail() { echo; echo "[!] $*"; echo "[!] Update did not finish."; finish 1; }
|
||||
|
||||
# ---- git (macOS: the Command Line Tools installer offers it) --------------
|
||||
if ! git --version >/dev/null 2>&1; then
|
||||
if [ "$(uname)" = Darwin ]; then
|
||||
xcode-select --install >/dev/null 2>&1
|
||||
fail "Git is being installed (Apple Command Line Tools). Run this again when the installer has finished."
|
||||
fi
|
||||
fail "Git is not installed."
|
||||
fi
|
||||
|
||||
# ---- connect a folder unpacked from a zip ----------------------------------
|
||||
if [ ! -d .git ]; then
|
||||
echo "Connecting this folder to $REPO_URL ..."
|
||||
git init -q && git remote add origin "$REPO_URL" || fail "Cannot set up git in this folder."
|
||||
fi
|
||||
|
||||
# A developer copy follows a branch; it is updated with "git pull", not here.
|
||||
if git rev-parse -q --verify HEAD >/dev/null 2>&1 && branch=$(git symbolic-ref -q --short HEAD); then
|
||||
echo "This is a developer copy on branch $branch. Update it with: git pull"
|
||||
finish 0
|
||||
fi
|
||||
|
||||
echo "Checking for a new version..."
|
||||
git fetch --quiet --force --tags origin ||
|
||||
fail "Cannot reach $REPO_URL. Check the Internet connection and your Gitea login, then try again."
|
||||
|
||||
latest=$(git tag -l 'v*' --sort=-v:refname | head -n 1)
|
||||
[ -n "$latest" ] || fail "No released version found on the server."
|
||||
current=$(git describe --tags --exact-match HEAD 2>/dev/null)
|
||||
|
||||
if [ "$current" = "$latest" ]; then
|
||||
echo "You already have the newest version $latest."
|
||||
else
|
||||
if [ -n "$current" ]; then
|
||||
if [ -n "$(git status --porcelain --untracked-files=no)" ]; then
|
||||
echo "Some tool files in this folder were changed by hand. They will be replaced by $latest."
|
||||
read -r -p "Continue? [y/N] " answer
|
||||
[[ "$answer" =~ ^[Yy]$ ]] || fail "Cancelled."
|
||||
fi
|
||||
echo "Updating $current -> $latest. Changes:"
|
||||
git --no-pager log --oneline --no-decorate "$current..$latest"
|
||||
else
|
||||
echo "Installing $latest..."
|
||||
fi
|
||||
git -c advice.detachedHead=false checkout -q -f "$latest" || fail "Checkout of $latest failed."
|
||||
echo "Now on $latest."
|
||||
fi
|
||||
|
||||
# ---- Python libraries (only what changed) ----------------------------------
|
||||
if ! command -v uv >/dev/null 2>&1; then
|
||||
echo "Installing uv (Python package runner, current user only)..."
|
||||
curl -LsSf https://astral.sh/uv/install.sh | sh || fail "uv installation failed. Ask the firmware team for help."
|
||||
fi
|
||||
echo "Checking Python libraries..."
|
||||
uv sync --frozen --no-dev --python 3.12 --quiet || fail "Installing Python libraries failed."
|
||||
echo
|
||||
echo "Done. Start the tool with run_macos.command."
|
||||
finish 0
|
||||
Reference in new issue
Block a user