diff --git a/install.sh b/install.sh index 64fc959..57dadde 100644 --- a/install.sh +++ b/install.sh @@ -674,6 +674,7 @@ freshInstall=0 cachedMenuDomain='' lastTimeSpaceInfo=0 diagnosticsSizeOk=0 +forceUpdateCheck=0 MIKRUS_APIKEY='' MIKRUS_HOST='' @@ -1105,12 +1106,12 @@ download_if_needed() { local lastCheck=$(read_or_default "$UPDATES_DIR/timestamp") local timestampNow=$(date +%s) 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" ohai "Checking if new version is available..." local onlineUpdated="$(curl -fsSL "https://gitea.dzienia.pl/shared/mikrus-installer/raw/branch/$UPDATE_CHANNEL/updated")" local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded") - if [ "$onlineUpdated" == "$lastDownload" ]; then + if [ "$onlineUpdated" == "$lastDownload" ] && (( forceUpdateCheck == 0 )); then msgok "Latest update already downloaded" else echo "$onlineUpdated" >"$UPDATES_DIR/downloaded" @@ -1160,14 +1161,11 @@ update_if_needed() { download_if_needed - local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded" "") - local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "") + local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded" "???") + 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" - if [ $# -eq 1 ]; then - okdlg "Aktualizacja skryptów" "$1" - fi else local changed=0 @@ -1213,6 +1211,7 @@ update_if_needed() { if [ "$changed" -eq 0 ]; then if [ $# -eq 1 ]; then + msgok "Scripts and config files are up to date" okdlg "Aktualizacja skryptów" "$1" fi else @@ -1221,8 +1220,13 @@ update_if_needed() { okTxt="${TL}${uni_warn} Aktualizacja zrestartuje i zaktualizuje kontenery ${uni_warn}" 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" \ - "Zalecana jest aktualizacja plików:" \ + "Zalecana jest aktualizacja plików:${versionMsg}" \ "$( pad_multiline \ "${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" fi - echo "$onlineUpdated" >"$UPDATES_DIR/updated" + echo "$lastDownload" >"$UPDATES_DIR/updated" if ! [ "$instOnlineVer" == "$instLocalVer" ] || ! [ "$lastDownload" == "$updateInstalled" ]; then ohai "Updating $TOOL_FILE" @@ -2325,6 +2329,7 @@ gather_diagnostics() { local domain=$(get_td_domain) local ns_tag=$(dotenv-tool -r get -f "$ENV_FILE_DEP" "NS_NIGHTSCOUT_TAG") local mikrus_h=$(hostname) + local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???") local LOG_DIVIDER="=======================================================" @@ -2334,6 +2339,7 @@ gather_diagnostics() { echo " domena : $domain" echo " wersja nightscout : $ns_tag" echo " wersja nightscout-tool : $SCRIPT_VERSION ($SCRIPT_BUILD_TIME) $UPDATE_CHANNEL" + echo " build : ${updateInstalled}" } >"$SUPPORT_LOG" ohai "Zbieranie statusu usług" @@ -2872,7 +2878,9 @@ load_update_channel() { } startup_version() { + local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???") msgnote "nightscout-tool version $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)" + msgnote "build ${updateInstalled}" msgnote "$uni_copyright 2023-2024 Dominik Dzienia" msgnote "Licensed under CC BY-NC-ND 4.0" } @@ -2881,7 +2889,7 @@ parse_commandline_args() { 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 if [ $? != 0 ]; then @@ -2906,18 +2914,26 @@ parse_commandline_args() { -d | --develop) warn "Switching to DEVELOP update channel" UPDATE_CHANNEL=develop + forceUpdateCheck=1 echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE" shift ;; -p | --production) warn "Switching to PRODUCTION update channel" UPDATE_CHANNEL=master + forceUpdateCheck=1 echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE" shift ;; + -u | --update) + warn "Forcing update check" + forceUpdateCheck=1 + shift + ;; -c | --channel) shift # The arg is next in position args UPDATE_CHANNEL_CANDIDATE=$1 + forceUpdateCheck=1 [[ ! "$UPDATE_CHANNEL_CANDIDATE" =~ ^[a-z]{3,}$ ]] && { echo "Incorrect channel name provided: $UPDATE_CHANNEL_CANDIDATE" diff --git a/src/lib.sh b/src/lib.sh index 28feeb8..7926767 100644 --- a/src/lib.sh +++ b/src/lib.sh @@ -658,6 +658,7 @@ freshInstall=0 cachedMenuDomain='' lastTimeSpaceInfo=0 diagnosticsSizeOk=0 +forceUpdateCheck=0 MIKRUS_APIKEY='' MIKRUS_HOST='' @@ -1089,12 +1090,12 @@ download_if_needed() { local lastCheck=$(read_or_default "$UPDATES_DIR/timestamp") local timestampNow=$(date +%s) 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" ohai "Checking if new version is available..." local onlineUpdated="$(curl -fsSL "https://gitea.dzienia.pl/shared/mikrus-installer/raw/branch/$UPDATE_CHANNEL/updated")" local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded") - if [ "$onlineUpdated" == "$lastDownload" ]; then + if [ "$onlineUpdated" == "$lastDownload" ] && (( forceUpdateCheck == 0 )); then msgok "Latest update already downloaded" else echo "$onlineUpdated" >"$UPDATES_DIR/downloaded" @@ -1144,14 +1145,11 @@ update_if_needed() { download_if_needed - local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded" "") - local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "") + local lastDownload=$(read_or_default "$UPDATES_DIR/downloaded" "???") + 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" - if [ $# -eq 1 ]; then - okdlg "Aktualizacja skryptów" "$1" - fi else local changed=0 @@ -1197,6 +1195,7 @@ update_if_needed() { if [ "$changed" -eq 0 ]; then if [ $# -eq 1 ]; then + msgok "Scripts and config files are up to date" okdlg "Aktualizacja skryptów" "$1" fi else @@ -1205,8 +1204,13 @@ update_if_needed() { okTxt="${TL}${uni_warn} Aktualizacja zrestartuje i zaktualizuje kontenery ${uni_warn}" 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" \ - "Zalecana jest aktualizacja plików:" \ + "Zalecana jest aktualizacja plików:${versionMsg}" \ "$( pad_multiline \ "${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" fi - echo "$onlineUpdated" >"$UPDATES_DIR/updated" + echo "$lastDownload" >"$UPDATES_DIR/updated" if ! [ "$instOnlineVer" == "$instLocalVer" ] || ! [ "$lastDownload" == "$updateInstalled" ]; then ohai "Updating $TOOL_FILE" @@ -2309,6 +2313,7 @@ gather_diagnostics() { local domain=$(get_td_domain) local ns_tag=$(dotenv-tool -r get -f "$ENV_FILE_DEP" "NS_NIGHTSCOUT_TAG") local mikrus_h=$(hostname) + local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???") local LOG_DIVIDER="=======================================================" @@ -2318,6 +2323,7 @@ gather_diagnostics() { echo " domena : $domain" echo " wersja nightscout : $ns_tag" echo " wersja nightscout-tool : $SCRIPT_VERSION ($SCRIPT_BUILD_TIME) $UPDATE_CHANNEL" + echo " build : ${updateInstalled}" } >"$SUPPORT_LOG" ohai "Zbieranie statusu usług" @@ -2856,7 +2862,9 @@ load_update_channel() { } startup_version() { + local updateInstalled=$(read_or_default "$UPDATES_DIR/updated" "???") msgnote "nightscout-tool version $SCRIPT_VERSION ($SCRIPT_BUILD_TIME)" + msgnote "build ${updateInstalled}" msgnote "$uni_copyright 2023-2024 Dominik Dzienia" msgnote "Licensed under CC BY-NC-ND 4.0" } @@ -2865,7 +2873,7 @@ parse_commandline_args() { 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 if [ $? != 0 ]; then @@ -2890,18 +2898,26 @@ parse_commandline_args() { -d | --develop) warn "Switching to DEVELOP update channel" UPDATE_CHANNEL=develop + forceUpdateCheck=1 echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE" shift ;; -p | --production) warn "Switching to PRODUCTION update channel" UPDATE_CHANNEL=master + forceUpdateCheck=1 echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE" shift ;; + -u | --update) + warn "Forcing update check" + forceUpdateCheck=1 + shift + ;; -c | --channel) shift # The arg is next in position args UPDATE_CHANNEL_CANDIDATE=$1 + forceUpdateCheck=1 [[ ! "$UPDATE_CHANNEL_CANDIDATE" =~ ^[a-z]{3,}$ ]] && { echo "Incorrect channel name provided: $UPDATE_CHANNEL_CANDIDATE" diff --git a/updated b/updated index f5aa18d..00b17c6 100644 --- a/updated +++ b/updated @@ -1 +1 @@ -2024-10-25T10:04:13.801Z \ No newline at end of file +2024-10-25T12:32:17.951Z \ No newline at end of file