diff --git a/installJRMC b/installJRMC index a6c3be3..53ed64a 100755 --- a/installJRMC +++ b/installJRMC @@ -1617,6 +1617,52 @@ update_self() { } + +update_self() { + debug "Running: ${FUNCNAME[0]} $*" + + local script_url="https://git.bryanroessler.com/bryan/installJRMC/raw/master/installJRMC" + local tmp + tmp=$(mktemp) + + # Download the latest version of the script + if command -v curl &>/dev/null; then + curl -s -L -o "$tmp" "$script_url" + elif command -v wget &>/dev/null; then + wget -q -O "$tmp" "$script_url" + else + return 1 + fi + + # Extract and normalize version from a script + extract_version() { + local version_line + version_line=$(grep -m 1 'SCRIPT_VERSION=' "$1") + version_line=${version_line#*=} + version_line=${version_line#\"} + version_line=${version_line%-dev\"} + version_line=${version_line%\"} + echo "$version_line" + } + + # Compare versions + local_version=$(extract_version "$SCRIPT_PATH") + remote_version=$(extract_version "$tmp") + + [[ -z $remote_version ]] && { rm -f "$tmp"; return 1; } + + if [[ $local_version < $remote_version ]]; then + echo "Newer version of installJRMC found. Updating..." + execute mv "$tmp" "$SCRIPT_PATH" + execute chmod +x "$SCRIPT_PATH" + exec "$SCRIPT_PATH" "$@" "--no-self-update" + fi + + execute rm -f "$tmp" +} + + + main() { debug "Running: ${FUNCNAME[0]} $*"