diff --git a/ct/flaresolverr.sh b/ct/flaresolverr.sh index e1cac141..cf2860f2 100644 --- a/ct/flaresolverr.sh +++ b/ct/flaresolverr.sh @@ -28,8 +28,9 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - RELEASE=$(curl -fsSL https://api.github.com/repos/FlareSolverr/FlareSolverr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}') - if [[ "${RELEASE}" != "$(cat ~/.flaresolverr 2>/dev/null)" ]] || [[ ! -f ~/.flaresolverr ]]; then + + if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then + msg_info "Stopping service" systemctl stop flaresolverr msg_ok "Stopped service" @@ -52,10 +53,8 @@ EOF msg_info "Starting service" systemctl start flaresolverr msg_ok "Started service" - else - msg_ok "No update required. ${APP} is already at ${RELEASE}" fi - exit + exit 0 } start diff --git a/misc/tools.func b/misc/tools.func index 96c27a30..f5e7b533 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -2001,7 +2001,27 @@ EOF fi } -check_for_update() { +# ------------------------------------------------------------------------------ +# Checks for new GitHub release (latest tag). +# +# Description: +# - Queries the GitHub API for the latest release tag +# - Compares it to a local cached version (~/.) +# - If newer, sets global CHECK_UPDATE_RELEASE and returns 0 +# +# Usage: +# check_for_gh_release "AppName" "user/repo" +# if [[ $? -eq 0 ]]; then +# echo "New version available: $CHECK_UPDATE_RELEASE" +# # trigger update... +# fi +# +# Notes: +# - Requires `jq` (auto-installed if missing) +# - Does not modify anything, only checks version state +# - Does not support pre-releases +# ------------------------------------------------------------------------------ +check_for_gh_release() { local app="$1" local source="$2" local current_file="$HOME/.${app,,}"