Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions ani-cli
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,58 @@ update_script() {
exit 0
}

# compare two versions: returns 1 if v1>v2, 0 if equal, -1 if v1<v2
#compare at each level
ver_compare() {
v1=$1
v2=$2
while [ -n "$v1" ] || [ -n "$v2" ]; do
case "$v1" in
*.*) seg1=${v1%%.*}; v1=${v1#*.} ;;
"") seg1=0 ;;
*) seg1=$v1; v1=;;
esac
case "$v2" in
*.*) seg2=${v2%%.*}; v2=${v2#*.} ;;
"") seg2=0 ;;
*) seg2=$v2; v2=;;
esac
# treat non-numeric segments as 0 (like the original awk ai+0 behavior)
case "$seg1" in
''|*[!0-9]*) seg1=0 ;;
esac
case "$seg2" in
''|*[!0-9]*) seg2=0 ;;
esac
# strip leading zeros to avoid octal interpretation
while [ "${seg1#0}" != "$seg1" ]; do seg1=${seg1#0}; done
[ -z "$seg1" ] && seg1=0
while [ "${seg2#0}" != "$seg2" ]; do seg2=${seg2#0}; done
[ -z "$seg2" ] && seg2=0
if [ "$seg1" -lt "$seg2" ]; then
printf "%s\n" -1
return
fi
if [ "$seg1" -gt "$seg2" ]; then
printf "%s\n" 1
return
fi
done
printf "%s\n" 0
}
#check for newer version on GitHub; we can disable it by setting ANI_CLI_DISABLE_UPDATE_CHECK=1
check_remote_version() {
[ "${ANI_CLI_DISABLE_UPDATE_CHECK:-0}" = "1" ] && return 0
rem=$(curl -fs -A "$agent" "https://raw.githubusercontent.com/pystardust/ani-cli/master/ani-cli" 2>/dev/null) || return 0
[ -z "$rem" ] && return 0
remote_ver=$(printf '%s\n' "$rem" | sed -nE 's/^version_number="([^"]*)"/\1/p' | head -n1)
[ -z "$remote_ver" ] && return 0
cmp=$(ver_compare "$remote_ver" "$version_number")
if [ "$cmp" -eq 1 ]; then
printf "\33[2K\r\033[1;33mNew version available: %s (installed: %s). Run %s to update.\033[0m\n" "$remote_ver" "$version_number" "${0##*/} -U" >&2
fi
}

# checks if dependencies are present
dep_ch() {
for dep; do
Expand Down Expand Up @@ -565,6 +617,7 @@ done
[ "$use_external_menu" = "1" ] && multi_selection_flag="${ANI_CLI_MULTI_SELECTION:-"-multi-select"}"
[ "$external_menu_normal_window" = "1" ] && external_menu_args="-normal-window"
printf "\33[2K\r\033[1;34mChecking dependencies...\033[0m\n"
check_remote_version &
dep_ch "curl" "sed" "grep" || true
case "$(uname -o 2>/dev/null)" in
*ndroid*) command -v openssl >/dev/null || die 'Program "openssl" not found. On Termux, install with: pkg install openssl-tool' ;;
Expand Down
Loading