improve: Add update-and-re-exec mechanism to install.sh to handle self-updates correctly

This commit is contained in:
XPS\Micro 2026-03-19 08:04:09 +01:00
parent 7111d7a265
commit bb257501d3

View File

@ -9,6 +9,16 @@ set -e
REPO_URL="https://gitea.iotxs.de/RainerWieland/spawner.git" REPO_URL="https://gitea.iotxs.de/RainerWieland/spawner.git"
RAW_URL="https://gitea.iotxs.de/RainerWieland/spawner/raw/branch/main" RAW_URL="https://gitea.iotxs.de/RainerWieland/spawner/raw/branch/main"
INSTALL_DIR="${PWD}" INSTALL_DIR="${PWD}"
# ============================================================
# UPDATE & RE-EXEC: Wenn install.sh aktualisiert wird, neu starten
# ============================================================
SCRIPT_PATH="${BASH_SOURCE[0]}"
if [ -f "${SCRIPT_PATH}" ]; then
# Speichere Checksumme VOR git pull
BEFORE_HASH=$(md5sum "${SCRIPT_PATH}" 2>/dev/null | awk '{print $1}' || echo "")
ALREADY_REEXECED="${ALREADY_REEXECED:-false}"
fi
# VERSION automatisch aus Git-Tags bestimmen (z.B. v0.1.0, v0.2.1) # VERSION automatisch aus Git-Tags bestimmen (z.B. v0.1.0, v0.2.1)
# Fallback auf "dev" wenn keine Tags vorhanden # Fallback auf "dev" wenn keine Tags vorhanden
VERSION=$(git describe --tags --always 2>/dev/null | sed 's/^v//' || echo "dev") VERSION=$(git describe --tags --always 2>/dev/null | sed 's/^v//' || echo "dev")
@ -219,6 +229,21 @@ if [ -d "${INSTALL_DIR}/.git" ]; then
echo -e "${YELLOW}Git-Update fehlgeschlagen, fahre mit lokalen Dateien fort...${NC}" echo -e "${YELLOW}Git-Update fehlgeschlagen, fahre mit lokalen Dateien fort...${NC}"
fi fi
fi fi
# ============================================================
# Prüfe ob install.sh selbst aktualisiert wurde - wenn ja, neu starten
# ============================================================
if [ "${ALREADY_REEXECED}" = "false" ] && [ -f "${SCRIPT_PATH}" ]; then
AFTER_HASH=$(md5sum "${SCRIPT_PATH}" 2>/dev/null | awk '{print $1}' || echo "")
if [ -n "${BEFORE_HASH}" ] && [ -n "${AFTER_HASH}" ] && [ "${BEFORE_HASH}" != "${AFTER_HASH}" ]; then
echo ""
echo -e "${BLUE}install.sh wurde aktualisiert - starte Skript neu...${NC}"
sleep 1
export ALREADY_REEXECED="true"
exec bash "${SCRIPT_PATH}"
exit $?
fi
fi
else else
echo "Neuinstallation - klone Repository..." echo "Neuinstallation - klone Repository..."