Auto-reload script via exec when git pull fetches updates
This commit is contained in:
1 parent
2a753ffcde
commit
183623962f
1 file changed
+27
-1
+27
-1
@@ -198,6 +198,8 @@ handle_age_key() {
|
||||
###############################################################################
|
||||
update_repo() {
|
||||
log "Updating repository..."
|
||||
local reexec_needed=false
|
||||
|
||||
if [[ ! -d "${REPO_DIR}/.git" ]]; then
|
||||
log "No .git directory found — cloning repository..."
|
||||
local tmp_dir
|
||||
@@ -208,12 +210,32 @@ update_repo() {
|
||||
rm -rf "${tmp_dir}"
|
||||
cd "${REPO_DIR}"
|
||||
git checkout -- . 2>/dev/null || true
|
||||
reexec_needed=true
|
||||
else
|
||||
cd "${REPO_DIR}"
|
||||
local old_commit
|
||||
old_commit=$(git rev-parse HEAD 2>/dev/null || echo "old")
|
||||
git fetch origin
|
||||
git reset --hard origin/main || git reset --hard origin/master || true
|
||||
local new_commit
|
||||
new_commit=$(git rev-parse HEAD 2>/dev/null || echo "new")
|
||||
|
||||
if [[ "${old_commit}" != "${new_commit}" ]]; then
|
||||
log "Update detected! (${old_commit:0:7} -> ${new_commit:0:7})"
|
||||
reexec_needed=true
|
||||
fi
|
||||
fi
|
||||
chmod 700 "${REPO_DIR}/deploy_script.sh" 2>/dev/null || true
|
||||
|
||||
if [[ "${reexec_needed}" == "true" ]]; then
|
||||
if [[ -z "${PAPERCLIP_REEXEC:-}" ]]; then
|
||||
log "Re-executing updated script..."
|
||||
export PAPERCLIP_REEXEC=1
|
||||
exec bash "$0" "$@"
|
||||
else
|
||||
warn "Re-exec already attempted. Continuing to avoid infinite loop."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
@@ -383,7 +405,11 @@ main() {
|
||||
|
||||
trap on_deploy_failure ERR
|
||||
|
||||
notify "PaperClip Deploy Start" "Deploy-Skript gestartet. System wird überprüft..." "default" "gear"
|
||||
if [[ -z "${PAPERCLIP_REEXEC:-}" ]]; then
|
||||
notify "PaperClip Deploy Start" "Deploy-Skript gestartet. System wird überprüft..." "default" "gear"
|
||||
else
|
||||
notify "PaperClip Deploy Neustart" "Skript hat sich selbst geupdatet und führt sich nun aus." "default" "arrows_counterclockwise"
|
||||
fi
|
||||
|
||||
install_packages
|
||||
configure_system
|
||||
|
||||
Reference in new issue
Block a user