From 1ceaa78c6b5d310a71bfed679fa1580e07a48a96 Mon Sep 17 00:00:00 2001 From: Martinski <119833648+Martinski4GitHub@users.noreply.github.com> Date: Tue, 25 Mar 2025 02:31:04 -0700 Subject: [PATCH 1/3] Build Number in Version File Added code to extract a "build number" (IF it exists) from the version file so we can compare different build numbers when the version strings are the same. --- MerlinAU.sh | 67 +++++++++++++++++++++++++++++++++++++++++------------ README.md | 2 +- version.txt | 1 + 3 files changed, 54 insertions(+), 16 deletions(-) diff --git a/MerlinAU.sh b/MerlinAU.sh index f1dd5a46..9256094b 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -4,7 +4,7 @@ # # Original Creation Date: 2023-Oct-01 by @ExtremeFiretop. # Official Co-Author: @Martinski W. - Date: 2023-Nov-01 -# Last Modified: 2025-Mar-20 +# Last Modified: 2025-Mar-24 ################################################################### set -u @@ -37,11 +37,13 @@ readonly CL_URL_3006="${FW_SFURL_BASE}/Documentation/Changelog-3006.txt/download readonly high_risk_terms="factory default reset|features are disabled|break backward compatibility|must be manually|strongly recommended" ##----------------------------------------## -## Modified by Martinski W. [2024-Dec-31] ## +## Modified by Martinski W. [2025-Mar-24] ## ##----------------------------------------## # For new script version updates from source repository # DLRepoVersion="" DLRepoVersionNum="" +DLRepoBuildNum=0 +ScriptBuildNum=0 ScriptVersionNum="" scriptUpdateNotify=0 @@ -2608,6 +2610,24 @@ _CheckForNewGUIVersionUpdate_() return "$retCode" } +##-------------------------------------## +## Added by Martinski W. [2025-Mar-24] ## +##-------------------------------------## +_GetDLScriptVersion_() +{ + if [ $# -eq 0 ] || [ -z "$1" ] || [ ! -s "$1" ] + then echo ; return 1 ; fi + + local DLversBuildNum=0 + if [ "$(wc -l < "$1")" -eq 2 ] + then + DLversBuildNum="$(tail -n1 "$1")" + [ -z "$DLversBuildNum" ] && DLversBuildNum=0 + fi + echo "$(head -n1 "$1")|$DLversBuildNum" + return 0 +} + ##----------------------------------------## ## Modified by Martinski W. [2025-Feb-15] ## ##----------------------------------------## @@ -2692,7 +2712,7 @@ _DownloadScriptFiles_() } ##----------------------------------------## -## Modified by Martinski W. [2025-Feb-15] ## +## Modified by Martinski W. [2025-Mar-24] ## ##----------------------------------------## _SCRIPT_UPDATE_() { @@ -2701,10 +2721,7 @@ _SCRIPT_UPDATE_() if [ $# -gt 0 ] && [ "$1" = "force" ] then printf "\n${CYANct}Force downloading latest script version...${NOct}\n" - if ! _CheckForNewScriptUpdates_ -quietcheck - then - DLRepoVersion="$(/usr/sbin/curl -LSs --retry 4 --retry-delay 5 "${SCRIPT_URL_REPO}/version.txt")" - fi + _CheckForNewScriptUpdates_ -quietcheck if _CheckForNewGUIVersionUpdate_ "$SCRIPT_VERSION" "$DLRepoVersion" then extraParam="install" fi @@ -2749,7 +2766,8 @@ _SCRIPT_UPDATE_() if _DownloadScriptFiles_ update then if "$mountWebGUI_OK" - then _SetVersionSharedSettings_ local "$DLRepoVersion" ; fi + then _SetVersionSharedSettings_ local "$DLRepoVersion" + fi printf "\n${CYANct}Download successful!${NOct}\n" printf "$(date) - Successfully downloaded $SCRIPT_NAME v${DLRepoVersion}\n" fi @@ -2770,7 +2788,8 @@ _SCRIPT_UPDATE_() if _DownloadScriptFiles_ update then if "$mountWebGUI_OK" - then _SetVersionSharedSettings_ local "$DLRepoVersion" ; fi + then _SetVersionSharedSettings_ local "$DLRepoVersion" + fi printf "\n$(date) - Successfully downloaded $SCRIPT_NAME v${DLRepoVersion}\n" printf "${CYANct}Update successful! Restarting script...${NOct}\n" sleep 1 @@ -2791,23 +2810,37 @@ _SCRIPT_UPDATE_() } ##----------------------------------------## -## Modified by Martinski W. [2025-Feb-15] ## +## Modified by Martinski W. [2025-Mar-24] ## ##----------------------------------------## _CheckForNewScriptUpdates_() { + local verStr DLScriptVerPath="${SCRIPT_VERPATH}.DL.tmp" echo DLRepoVersion="$SCRIPT_VERSION" - [ -s "$SCRIPT_VERPATH" ] && DLRepoVersion="$(cat "$SCRIPT_VERPATH")" - rm -f "$SCRIPT_VERPATH" + if [ -s "$SCRIPT_VERPATH" ] + then + if verStr="$(_GetDLScriptVersion_ "$SCRIPT_VERPATH")" + then + DLRepoVersion="$(echo "$verStr" | awk -F '|' '{print $1}')" + DLRepoBuildNum="$(echo "$verStr" | awk -F '|' '{print $2}')" + ScriptBuildNum="$DLRepoBuildNum" + fi + fi - if ! _CurlFileDownload_ "version.txt" "$SCRIPT_VERPATH" + if ! _CurlFileDownload_ "version.txt" "$DLScriptVerPath" then Say "${REDct}**ERROR**${NOct}: Unable to download latest version file for $SCRIPT_NAME." scriptUpdateNotify=0 return 1 fi - DLRepoVersion="$(cat "$SCRIPT_VERPATH")" + if verStr="$(_GetDLScriptVersion_ "$DLScriptVerPath")" + then + DLRepoVersion="$(echo "$verStr" | awk -F '|' '{print $1}')" + DLRepoBuildNum="$(echo "$verStr" | awk -F '|' '{print $2}')" + fi + rm -f "$DLScriptVerPath" + if [ -z "$DLRepoVersion" ] then Say "${REDct}**ERROR**${NOct}: Variable for downloaded version is empty." @@ -2818,7 +2851,11 @@ _CheckForNewScriptUpdates_() DLRepoVersionNum="$(_ScriptVersionStrToNum_ "$DLRepoVersion")" ScriptVersionNum="$(_ScriptVersionStrToNum_ "$SCRIPT_VERSION")" - if [ "$DLRepoVersionNum" -gt "$ScriptVersionNum" ] + if [ "$DLRepoVersionNum" -gt "$ScriptVersionNum" ] || \ + { + [ "$DLRepoVersionNum" -eq "$ScriptVersionNum" ] && \ + [ "$DLRepoBuildNum" -gt "$ScriptBuildNum" ] + } then scriptUpdateNotify="New script update available. ${REDct}v${SCRIPT_VERSION}${NOct} --> ${GRNct}v${DLRepoVersion}${NOct}" diff --git a/README.md b/README.md index b147e0d0..24c53b00 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MerlinAU - AsusWRT-Merlin Firmware Auto Updater ## v1.4.0 -## 2025-Mar-20 +## 2025-Mar-25 ## WebUI: ![image](https://github.com/user-attachments/assets/10d0971c-b3c6-477a-8904-d4bf013f72df) diff --git a/version.txt b/version.txt index 88c5fb89..886ddf7c 100644 --- a/version.txt +++ b/version.txt @@ -1 +1,2 @@ 1.4.0 +25032500 From b85481a151b99477f728831e49e8e55bffbc462d Mon Sep 17 00:00:00 2001 From: Martinski <119833648+Martinski4GitHub@users.noreply.github.com> Date: Tue, 25 Mar 2025 02:46:36 -0700 Subject: [PATCH 2/3] Fine-tuning Code --- MerlinAU.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MerlinAU.sh b/MerlinAU.sh index 9256094b..853eb64e 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -2853,8 +2853,8 @@ _CheckForNewScriptUpdates_() if [ "$DLRepoVersionNum" -gt "$ScriptVersionNum" ] || \ { - [ "$DLRepoVersionNum" -eq "$ScriptVersionNum" ] && \ - [ "$DLRepoBuildNum" -gt "$ScriptBuildNum" ] + [ "$DLRepoBuildNum" -gt "$ScriptBuildNum" ] && \ + [ "$DLRepoVersionNum" -eq "$ScriptVersionNum" ] } then scriptUpdateNotify="New script update available. From c2dcc670f75ceea3e5b11cff012eec488b504ff7 Mon Sep 17 00:00:00 2001 From: Martinski <119833648+Martinski4GitHub@users.noreply.github.com> Date: Tue, 25 Mar 2025 19:39:02 -0700 Subject: [PATCH 3/3] Update Create-NewReleases.yml Grab the 1st line from file. --- .github/workflows/Create-NewReleases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Create-NewReleases.yml b/.github/workflows/Create-NewReleases.yml index 0c3c4580..d99bdba2 100644 --- a/.github/workflows/Create-NewReleases.yml +++ b/.github/workflows/Create-NewReleases.yml @@ -30,7 +30,7 @@ jobs: id: nextver run: | if [[ -f version.txt ]]; then - NEXT_TAG=$(cat version.txt) + NEXT_TAG=$(head -n 1 version.txt) else CURRENT_TAG=$(git tag --sort=-v:refname | head -n 1) if [[ $CURRENT_TAG == '' ]]; then