File notification and JSON output fixes (#281)

* File notification and JSON output fixes

* Truncate notify file(s) on first write and then append

* Strip wrapping double quotes from Dockcheck update tempcsv variable before jsonification

* Eliminate separate truncate step
This commit is contained in:
vorezal
2026-04-20 14:36:54 -04:00
committed by GitHub
parent 37052d1377
commit e54f225a78
2 changed files with 9 additions and 5 deletions
+8 -4
View File
@@ -1,5 +1,5 @@
### DISCLAIMER: This is a third party addition to dockcheck - best effort testing. ### DISCLAIMER: This is a third party addition to dockcheck - best effort testing.
NOTIFY_FILE_VERSION="v0.1" NOTIFY_FILE_VERSION="v0.2"
# #
# Leave (or place) this file in the "notify_templates" subdirectory within the same directory as the main dockcheck.sh script. # Leave (or place) this file in the "notify_templates" subdirectory within the same directory as the main dockcheck.sh script.
# If you instead wish make your own modifications, make a copy in the same directory as the main dockcheck.sh script. # If you instead wish make your own modifications, make a copy in the same directory as the main dockcheck.sh script.
@@ -13,10 +13,14 @@ trigger_file_notification() {
UpperChannel="FILE" UpperChannel="FILE"
fi fi
FileTruncVar="${UpperChannel}_TRUNC"
FilePathVar="${UpperChannel}_PATH" FilePathVar="${UpperChannel}_PATH"
NotifyFile="${!FilePathVar:=${ScriptWorkDir}/updates_available.txt}" NotifyFile="${!FilePathVar:=${ScriptWorkDir}/updates_available.txt}"
echo "${MessageBody}" > ${NotifyFile} if [[ ${!FileTruncVar:=0} -eq 0 ]]; then
echo "${MessageBody}" > ${NotifyFile}
declare -g ${FileTruncVar}=1
else
echo "${MessageBody}" >> ${NotifyFile}
fi
} }
+1 -1
View File
@@ -205,7 +205,7 @@ format_output() {
FormattedOutput=$(jq --compact-output --null-input --arg updates "${tempcsv}" '($updates | split("\\n")) | map(split(",")) | {"updates": map({"script_name": .[0], "installed_version": .[1], "latest_version": .[2]})}') FormattedOutput=$(jq --compact-output --null-input --arg updates "${tempcsv}" '($updates | split("\\n")) | map(split(",")) | {"updates": map({"script_name": .[0], "installed_version": .[1], "latest_version": .[2]})}')
elif [[ "${UpdateType}" == "dockcheck_update" ]]; then elif [[ "${UpdateType}" == "dockcheck_update" ]]; then
# dockcheck update case # dockcheck update case
FormattedOutput=$(jq --compact-output --null-input --arg updates "${tempcsv}" '($updates | split("\\n")) | map(split(",")) | {"updates": map({"script_name": .[0], "installed_version": .[1], "latest_version": .[2], "release_notes": (.[3:] | join(","))})}') FormattedOutput=$(jq --compact-output --null-input --arg updates "${tempcsv//\"/}" '($updates | split("\\n")) | map(split(",")) | {"updates": map({"script_name": .[0], "installed_version": .[1], "latest_version": .[2], "release_notes": (.[3:] | join(","))})}')
else else
FormattedOutput="Invalid input" FormattedOutput="Invalid input"
fi fi