From d01f5c7a6f39877bc25d02f450ae876702d76c46 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Tue, 17 Mar 2026 08:55:00 +0100 Subject: [PATCH] tools.func Implement check_for_gh_tag function Adds a function to check for new GitHub tags for repositories without releases. (needed for termix / guacd-server) --- misc/tools.func | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/misc/tools.func b/misc/tools.func index a4b73eb63..f5e0c0261 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -2174,6 +2174,50 @@ get_latest_gh_tag() { return 0 } +# ------------------------------------------------------------------------------ +# Checks for new GitHub tag (for repos without releases). +# +# Description: +# - Uses get_latest_gh_tag to fetch the latest tag +# - Compares it to a local cached version (~/.) +# - If newer, sets global CHECK_UPDATE_RELEASE and returns 0 +# +# Usage: +# if check_for_gh_tag "guacd" "apache/guacamole-server"; then +# # trigger update using $CHECK_UPDATE_RELEASE ... +# fi +# +# Notes: +# - For repos that only publish tags, not GitHub Releases +# - Same interface as check_for_gh_release +# ------------------------------------------------------------------------------ +check_for_gh_tag() { + local app="$1" + local repo="$2" + local prefix="${3:-}" + local app_lc="" + app_lc="$(echo "${app,,}" | tr -d ' ')" + local current_file="$HOME/.${app_lc}" + + msg_info "Checking for update: ${app}" + + local latest="" + latest=$(get_latest_gh_tag "$repo" "$prefix") || return 1 + + local current="" + [[ -f "$current_file" ]] && current="$(<"$current_file")" + + if [[ -z "$current" || "$current" != "$latest" ]]; then + CHECK_UPDATE_RELEASE="$latest" + msg_ok "Update available: ${app} ${current:-not installed} → ${latest}" + return 0 + fi + + msg_ok "No update available: ${app} (${latest})" + return 1 +} + + # ============================================================================== # INSTALL FUNCTIONS # ==============================================================================