Files
cloudron-box/src/scripts/update.sh

53 lines
1.4 KiB
Bash
Raw Normal View History

#!/bin/bash
set -eu -o pipefail
if [[ ${EUID} -ne 0 ]]; then
echo "This script should be run as root." > /dev/stderr
exit 1
fi
2023-05-15 19:05:39 +02:00
readonly updater_service="cloudron-updater"
if [[ $# == 1 && "$1" == "--check" ]]; then
echo "OK"
exit 0
fi
if [[ $# != 2 ]]; then
echo "Usage: update.sh <sourceDir> <logFile> arguments required"
exit 1
fi
2023-05-15 19:05:39 +02:00
function log() {
echo -e "$(date +'%Y-%m-%dT%H:%M:%S')" "==> update: $1"
}
2023-05-15 19:05:39 +02:00
readonly source_dir="${1}"
readonly log_file="${2}"
2018-08-01 15:38:40 -07:00
readonly installer_path="${source_dir}/scripts/installer.sh"
readonly ubuntu_version=$(lsb_release -rs)
2023-05-15 19:05:39 +02:00
log "updating Cloudron with ${source_dir}"
2018-11-15 10:52:31 -08:00
# StandardError will follow StandardOutput in default inherit mode. https://www.freedesktop.org/software/systemd/man/systemd.exec.html
systemctl reset-failed "${updater_service}" 2>/dev/null || true
[[ "${ubuntu_version}" == "18.04" ]] && file_mode="file" || file_mode="append"
if ! systemd-run --property=OOMScoreAdjust=-1000 --unit "${updater_service}" -p StandardOutput=${file_mode}:${log_file} ${installer_path}; then
2023-05-15 19:05:39 +02:00
log "Failed to install cloudron"
exit 1
fi
while true; do
2023-05-15 19:05:39 +02:00
if systemctl is-failed "${updater_service}" >/dev/null 2>&1; then
log "${updater_service} failed"
exit 1
fi
2023-05-15 19:05:39 +02:00
log "${updater_service} is still active. will check in 5 seconds"
2018-11-30 21:18:01 -08:00
sleep 5
# this loop will stop once the update process stopped the box unit and thus terminating this child process
done