Add update forcing option

pull/6/head
Dominik Dzienia 7 months ago
parent 60b67ceb10
commit 8b9df0f7e6

@ -674,6 +674,7 @@ freshInstall=0
cachedMenuDomain='' cachedMenuDomain=''
lastTimeSpaceInfo=0 lastTimeSpaceInfo=0
diagnosticsSizeOk=0 diagnosticsSizeOk=0
forceUpdateCheck=0
MIKRUS_APIKEY='' MIKRUS_APIKEY=''
MIKRUS_HOST='' MIKRUS_HOST=''
@ -1105,12 +1106,12 @@ download_if_needed() {
local lastCheck=$(read_or_default "$UPDATES_DIR/timestamp") local lastCheck=$(read_or_default "$UPDATES_DIR/timestamp")
local timestampNow=$(date +%s) local timestampNow=$(date +%s)
local updateCheck=$UPDATE_CHECK local updateCheck=$UPDATE_CHECK
if (((timestampNow - lastCheck) > updateCheck)) || [ $# -eq 1 ]; then if (((timestampNow - lastCheck) > updateCheck)) || [ $# -eq 1 ] || (( forceUpdateCheck == 1 )); then
echo "$timestampNow" >"$UPDATES_DIR/timestamp" echo "$timestampNow" >"$UPDATES_DIR/timestamp"
ohai "Checking if new version is available..." ohai "Checking if new version is available..."
local onlineUpdated="$(curl -fsSL "https://gitea.dzienia.pl/shared/mikrus-installer/raw/branch/$UPDATE_CHANNEL/updated")" local onlineUpdated="$(curl -fsSL "https://gitea.dzienia.pl/shared/mikrus-installer/raw/branch/$UPDATE_CHANNEL/updated")"
local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded") local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded")
if [ "$onlineUpdated" == "$lastDownload" ]; then if [ "$onlineUpdated" == "$lastDownload" ] && (( forceUpdateCheck == 0 )); then
msgok "Latest update already downloaded" msgok "Latest update already downloaded"
else else
echo "$onlineUpdated" >"$UPDATES_DIR/downloaded" echo "$onlineUpdated" >"$UPDATES_DIR/downloaded"
@ -1160,14 +1161,11 @@ update_if_needed() {
download_if_needed download_if_needed
local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded" "") local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded" "???")
local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "") local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???")
if [ "$lastDownload" == "$updateInstalled" ]; then if [ "$lastDownload" == "$updateInstalled" ] && (( forceUpdateCheck == 0 )) && [ $# -eq 0 ]; then
msgok "Scripts and config files are up to date" msgok "Scripts and config files are up to date"
if [ $# -eq 1 ]; then
okdlg "Aktualizacja skryptów" "$1"
fi
else else
local changed=0 local changed=0
@ -1213,6 +1211,7 @@ update_if_needed() {
if [ "$changed" -eq 0 ]; then if [ "$changed" -eq 0 ]; then
if [ $# -eq 1 ]; then if [ $# -eq 1 ]; then
msgok "Scripts and config files are up to date"
okdlg "Aktualizacja skryptów" "$1" okdlg "Aktualizacja skryptów" "$1"
fi fi
else else
@ -1221,8 +1220,13 @@ update_if_needed() {
okTxt="${TL}${uni_warn} Aktualizacja zrestartuje i zaktualizuje kontenery ${uni_warn}" okTxt="${TL}${uni_warn} Aktualizacja zrestartuje i zaktualizuje kontenery ${uni_warn}"
fi fi
local versionMsg="${TL}Build: ${updateInstalled}"
if [ ! "$lastDownload" == "$updateInstalled" ]; then
versionMsg="$(pad_multiline "${TL}Masz build: ${updateInstalled}${NL} Dostępny: ${lastDownload}")"
fi
yesnodlg "Aktualizacja skryptów" "$uni_confirm_upd" "$uni_resign" \ yesnodlg "Aktualizacja skryptów" "$uni_confirm_upd" "$uni_resign" \
"Zalecana jest aktualizacja plików:" \ "Zalecana jest aktualizacja plików:${versionMsg}" \
"$( "$(
pad_multiline \ pad_multiline \
"${TL}${uni_bullet}Skrypt instalacyjny: $msgInst" \ "${TL}${uni_bullet}Skrypt instalacyjny: $msgInst" \
@ -1255,7 +1259,7 @@ update_if_needed() {
dotenv-tool -pr -o "$ENV_FILE_NS" -i "$UPDATES_DIR/deployment.env" "$ENV_FILE_NS" dotenv-tool -pr -o "$ENV_FILE_NS" -i "$UPDATES_DIR/deployment.env" "$ENV_FILE_NS"
fi fi
echo "$onlineUpdated" >"$UPDATES_DIR/updated" echo "$lastDownload" >"$UPDATES_DIR/updated"
if ! [ "$instOnlineVer" == "$instLocalVer" ] || ! [ "$lastDownload" == "$updateInstalled" ]; then if ! [ "$instOnlineVer" == "$instLocalVer" ] || ! [ "$lastDownload" == "$updateInstalled" ]; then
ohai "Updating $TOOL_FILE" ohai "Updating $TOOL_FILE"
@ -2325,6 +2329,7 @@ gather_diagnostics() {
local domain=$(get_td_domain) local domain=$(get_td_domain)
local ns_tag=$(dotenv-tool -r get -f "$ENV_FILE_DEP" "NS_NIGHTSCOUT_TAG") local ns_tag=$(dotenv-tool -r get -f "$ENV_FILE_DEP" "NS_NIGHTSCOUT_TAG")
local mikrus_h=$(hostname) local mikrus_h=$(hostname)
local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???")
local LOG_DIVIDER="=======================================================" local LOG_DIVIDER="======================================================="
@ -2334,6 +2339,7 @@ gather_diagnostics() {
echo " domena : $domain" echo " domena : $domain"
echo " wersja nightscout : $ns_tag" echo " wersja nightscout : $ns_tag"
echo " wersja nightscout-tool : $SCRIPT_VERSION ($SCRIPT_BUILD_TIME) $UPDATE_CHANNEL" echo " wersja nightscout-tool : $SCRIPT_VERSION ($SCRIPT_BUILD_TIME) $UPDATE_CHANNEL"
echo " build : ${updateInstalled}"
} >"$SUPPORT_LOG" } >"$SUPPORT_LOG"
ohai "Zbieranie statusu usług" ohai "Zbieranie statusu usług"
@ -2872,7 +2878,9 @@ load_update_channel() {
} }
startup_version() { startup_version() {
local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???")
msgnote "nightscout-tool version $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)" msgnote "nightscout-tool version $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)"
msgnote "build ${updateInstalled}"
msgnote "$uni_copyright 2023-2024 Dominik Dzienia" msgnote "$uni_copyright 2023-2024 Dominik Dzienia"
msgnote "Licensed under CC BY-NC-ND 4.0" msgnote "Licensed under CC BY-NC-ND 4.0"
} }
@ -2881,7 +2889,7 @@ parse_commandline_args() {
load_update_channel load_update_channel
CMDARGS=$(getopt --quiet -o wvdpc: --long watchdog,version,develop,production,channel: -n 'nightscout-tool' -- "$@") CMDARGS=$(getopt --quiet -o wvdpuc: --long watchdog,version,develop,production,update,channel: -n 'nightscout-tool' -- "$@")
# shellcheck disable=SC2181 # shellcheck disable=SC2181
if [ $? != 0 ]; then if [ $? != 0 ]; then
@ -2906,18 +2914,26 @@ parse_commandline_args() {
-d | --develop) -d | --develop)
warn "Switching to DEVELOP update channel" warn "Switching to DEVELOP update channel"
UPDATE_CHANNEL=develop UPDATE_CHANNEL=develop
forceUpdateCheck=1
echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE" echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE"
shift shift
;; ;;
-p | --production) -p | --production)
warn "Switching to PRODUCTION update channel" warn "Switching to PRODUCTION update channel"
UPDATE_CHANNEL=master UPDATE_CHANNEL=master
forceUpdateCheck=1
echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE" echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE"
shift shift
;; ;;
-u | --update)
warn "Forcing update check"
forceUpdateCheck=1
shift
;;
-c | --channel) -c | --channel)
shift # The arg is next in position args shift # The arg is next in position args
UPDATE_CHANNEL_CANDIDATE=$1 UPDATE_CHANNEL_CANDIDATE=$1
forceUpdateCheck=1
[[ ! "$UPDATE_CHANNEL_CANDIDATE" =~ ^[a-z]{3,}$ ]] && { [[ ! "$UPDATE_CHANNEL_CANDIDATE" =~ ^[a-z]{3,}$ ]] && {
echo "Incorrect channel name provided: $UPDATE_CHANNEL_CANDIDATE" echo "Incorrect channel name provided: $UPDATE_CHANNEL_CANDIDATE"

@ -658,6 +658,7 @@ freshInstall=0
cachedMenuDomain='' cachedMenuDomain=''
lastTimeSpaceInfo=0 lastTimeSpaceInfo=0
diagnosticsSizeOk=0 diagnosticsSizeOk=0
forceUpdateCheck=0
MIKRUS_APIKEY='' MIKRUS_APIKEY=''
MIKRUS_HOST='' MIKRUS_HOST=''
@ -1089,12 +1090,12 @@ download_if_needed() {
local lastCheck=$(read_or_default "$UPDATES_DIR/timestamp") local lastCheck=$(read_or_default "$UPDATES_DIR/timestamp")
local timestampNow=$(date +%s) local timestampNow=$(date +%s)
local updateCheck=$UPDATE_CHECK local updateCheck=$UPDATE_CHECK
if (((timestampNow - lastCheck) > updateCheck)) || [ $# -eq 1 ]; then if (((timestampNow - lastCheck) > updateCheck)) || [ $# -eq 1 ] || (( forceUpdateCheck == 1 )); then
echo "$timestampNow" >"$UPDATES_DIR/timestamp" echo "$timestampNow" >"$UPDATES_DIR/timestamp"
ohai "Checking if new version is available..." ohai "Checking if new version is available..."
local onlineUpdated="$(curl -fsSL "https://gitea.dzienia.pl/shared/mikrus-installer/raw/branch/$UPDATE_CHANNEL/updated")" local onlineUpdated="$(curl -fsSL "https://gitea.dzienia.pl/shared/mikrus-installer/raw/branch/$UPDATE_CHANNEL/updated")"
local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded") local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded")
if [ "$onlineUpdated" == "$lastDownload" ]; then if [ "$onlineUpdated" == "$lastDownload" ] && (( forceUpdateCheck == 0 )); then
msgok "Latest update already downloaded" msgok "Latest update already downloaded"
else else
echo "$onlineUpdated" >"$UPDATES_DIR/downloaded" echo "$onlineUpdated" >"$UPDATES_DIR/downloaded"
@ -1144,14 +1145,11 @@ update_if_needed() {
download_if_needed download_if_needed
local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded" "") local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded" "???")
local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "") local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???")
if [ "$lastDownload" == "$updateInstalled" ]; then if [ "$lastDownload" == "$updateInstalled" ] && (( forceUpdateCheck == 0 )) && [ $# -eq 0 ]; then
msgok "Scripts and config files are up to date" msgok "Scripts and config files are up to date"
if [ $# -eq 1 ]; then
okdlg "Aktualizacja skryptów" "$1"
fi
else else
local changed=0 local changed=0
@ -1197,6 +1195,7 @@ update_if_needed() {
if [ "$changed" -eq 0 ]; then if [ "$changed" -eq 0 ]; then
if [ $# -eq 1 ]; then if [ $# -eq 1 ]; then
msgok "Scripts and config files are up to date"
okdlg "Aktualizacja skryptów" "$1" okdlg "Aktualizacja skryptów" "$1"
fi fi
else else
@ -1205,8 +1204,13 @@ update_if_needed() {
okTxt="${TL}${uni_warn} Aktualizacja zrestartuje i zaktualizuje kontenery ${uni_warn}" okTxt="${TL}${uni_warn} Aktualizacja zrestartuje i zaktualizuje kontenery ${uni_warn}"
fi fi
local versionMsg="${TL}Build: ${updateInstalled}"
if [ ! "$lastDownload" == "$updateInstalled" ]; then
versionMsg="$(pad_multiline "${TL}Masz build: ${updateInstalled}${NL} Dostępny: ${lastDownload}")"
fi
yesnodlg "Aktualizacja skryptów" "$uni_confirm_upd" "$uni_resign" \ yesnodlg "Aktualizacja skryptów" "$uni_confirm_upd" "$uni_resign" \
"Zalecana jest aktualizacja plików:" \ "Zalecana jest aktualizacja plików:${versionMsg}" \
"$( "$(
pad_multiline \ pad_multiline \
"${TL}${uni_bullet}Skrypt instalacyjny: $msgInst" \ "${TL}${uni_bullet}Skrypt instalacyjny: $msgInst" \
@ -1239,7 +1243,7 @@ update_if_needed() {
dotenv-tool -pr -o "$ENV_FILE_NS" -i "$UPDATES_DIR/deployment.env" "$ENV_FILE_NS" dotenv-tool -pr -o "$ENV_FILE_NS" -i "$UPDATES_DIR/deployment.env" "$ENV_FILE_NS"
fi fi
echo "$onlineUpdated" >"$UPDATES_DIR/updated" echo "$lastDownload" >"$UPDATES_DIR/updated"
if ! [ "$instOnlineVer" == "$instLocalVer" ] || ! [ "$lastDownload" == "$updateInstalled" ]; then if ! [ "$instOnlineVer" == "$instLocalVer" ] || ! [ "$lastDownload" == "$updateInstalled" ]; then
ohai "Updating $TOOL_FILE" ohai "Updating $TOOL_FILE"
@ -2309,6 +2313,7 @@ gather_diagnostics() {
local domain=$(get_td_domain) local domain=$(get_td_domain)
local ns_tag=$(dotenv-tool -r get -f "$ENV_FILE_DEP" "NS_NIGHTSCOUT_TAG") local ns_tag=$(dotenv-tool -r get -f "$ENV_FILE_DEP" "NS_NIGHTSCOUT_TAG")
local mikrus_h=$(hostname) local mikrus_h=$(hostname)
local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???")
local LOG_DIVIDER="=======================================================" local LOG_DIVIDER="======================================================="
@ -2318,6 +2323,7 @@ gather_diagnostics() {
echo " domena : $domain" echo " domena : $domain"
echo " wersja nightscout : $ns_tag" echo " wersja nightscout : $ns_tag"
echo " wersja nightscout-tool : $SCRIPT_VERSION ($SCRIPT_BUILD_TIME) $UPDATE_CHANNEL" echo " wersja nightscout-tool : $SCRIPT_VERSION ($SCRIPT_BUILD_TIME) $UPDATE_CHANNEL"
echo " build : ${updateInstalled}"
} >"$SUPPORT_LOG" } >"$SUPPORT_LOG"
ohai "Zbieranie statusu usług" ohai "Zbieranie statusu usług"
@ -2856,7 +2862,9 @@ load_update_channel() {
} }
startup_version() { startup_version() {
local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???")
msgnote "nightscout-tool version $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)" msgnote "nightscout-tool version $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)"
msgnote "build ${updateInstalled}"
msgnote "$uni_copyright 2023-2024 Dominik Dzienia" msgnote "$uni_copyright 2023-2024 Dominik Dzienia"
msgnote "Licensed under CC BY-NC-ND 4.0" msgnote "Licensed under CC BY-NC-ND 4.0"
} }
@ -2865,7 +2873,7 @@ parse_commandline_args() {
load_update_channel load_update_channel
CMDARGS=$(getopt --quiet -o wvdpc: --long watchdog,version,develop,production,channel: -n 'nightscout-tool' -- "$@") CMDARGS=$(getopt --quiet -o wvdpuc: --long watchdog,version,develop,production,update,channel: -n 'nightscout-tool' -- "$@")
# shellcheck disable=SC2181 # shellcheck disable=SC2181
if [ $? != 0 ]; then if [ $? != 0 ]; then
@ -2890,18 +2898,26 @@ parse_commandline_args() {
-d | --develop) -d | --develop)
warn "Switching to DEVELOP update channel" warn "Switching to DEVELOP update channel"
UPDATE_CHANNEL=develop UPDATE_CHANNEL=develop
forceUpdateCheck=1
echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE" echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE"
shift shift
;; ;;
-p | --production) -p | --production)
warn "Switching to PRODUCTION update channel" warn "Switching to PRODUCTION update channel"
UPDATE_CHANNEL=master UPDATE_CHANNEL=master
forceUpdateCheck=1
echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE" echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE"
shift shift
;; ;;
-u | --update)
warn "Forcing update check"
forceUpdateCheck=1
shift
;;
-c | --channel) -c | --channel)
shift # The arg is next in position args shift # The arg is next in position args
UPDATE_CHANNEL_CANDIDATE=$1 UPDATE_CHANNEL_CANDIDATE=$1
forceUpdateCheck=1
[[ ! "$UPDATE_CHANNEL_CANDIDATE" =~ ^[a-z]{3,}$ ]] && { [[ ! "$UPDATE_CHANNEL_CANDIDATE" =~ ^[a-z]{3,}$ ]] && {
echo "Incorrect channel name provided: $UPDATE_CHANNEL_CANDIDATE" echo "Incorrect channel name provided: $UPDATE_CHANNEL_CANDIDATE"

@ -1 +1 @@
2024-10-25T10:04:13.801Z 2024-10-25T12:32:17.951Z
Loading…
Cancel
Save