diff --git a/utils.sh b/utils.sh
index 28f680b..da65b69 100755
--- a/utils.sh
+++ b/utils.sh
@@ -108,9 +108,10 @@ log() { echo -e "$1 " >>build.md; }
get_largest_ver() {
local max=0
while read -r v || [ -n "$v" ]; do
- if [ "$(command_compare "$v" "$max")" = 1 ]; then max=$v; fi
+ #shellcheck disable=SC2001
+ if [ "$(command_compare "$(sed 's/\./-/3' <<<"$v")" "$(sed 's/\./-/3' <<<"$max")")" = 1 ]; then max=$v; fi
done
- if [[ $max = 0 ]]; then echo ""; else echo "$max"; fi
+ if [[ $max != 0 ]]; then echo "$max"; fi
}
get_patch_last_supported_ver() {
unzip -p "$RV_PATCHES_JAR" | strings -s , | sed -rn "s/.*${1},versions,(([0-9.]*,*)*),Lk.*/\1/p" | tr ',' '\n' | get_largest_ver
@@ -123,7 +124,7 @@ dl_if_dne() {
fi
}
-# if you are here to copy paste this piece of code, acknowledge it:)
+# ------- apkmirror -------------
dl_apkmirror() {
local url=$1 version=$2 regexp=$3 output=$4
local resp
@@ -140,20 +141,30 @@ get_apkmirror_vers() {
# apkm_resp=$(req "https://www.apkmirror.com/uploads/?appcategory=${apkmirror_category}" -)
# apkm_name=$(echo "$apkm_resp" | sed -n 's;.*Latest \(.*\) Uploads.*;\1;p')
vers=$(req "https://www.apkmirror.com/uploads/?appcategory=${apkmirror_category}" - | sed -n 's;.*Version:\(.*\) .*;\1;p')
- if [ "$allow_alpha_version" = false ]; then grep -v -e "beta" -e "alpha" <<<"$vers"; else echo "$vers"; fi
+ if [ "$allow_alpha_version" = false ]; then grep -i -v -e "beta" -e "alpha" <<<"$vers"; else echo "$vers"; fi
}
get_apkmirror_pkg_name() {
req "$1" - | sed -n 's;.*id=\(.*\)" class="accent_color.*;\1;p'
}
-get_uptodown_ver() {
- local app_name=$1
- req "https://${app_name}.en.uptodown.com/android/download" - | json_get 'softwareVersion'
+# ------------------------------
+
+# ------- uptodown -------------
+get_uptodown_resp() {
+ req "https://${1}.en.uptodown.com/android/versions" -
+}
+get_uptodown_vers() {
+ echo "$1" | grep -x '^[0-9.]* .*' | sed 's/ " -B 1 | head -1 | sed -n 's;.*data-url="\(.*\)".*;\1;p')
+ url=$(req "$url" - | sed -n 's;.*data-url="\(.*\)".*;\1;p')
req "$url" "$output"
}
+get_uptodown_pkg_name() {
+ req "https://${1}.en.uptodown.com/android/download" - | grep -A 1 "Package Name" | tail -1 | tr -d ''
+}
+# ------------------------------
patch_apk() {
local stock_input=$1 patched_apk=$2 patcher_args=$3
@@ -174,7 +185,7 @@ zip_module() {
build_rv() {
local -n args=$1
- local version patcher_args build_mode_arr
+ local version patcher_args build_mode_arr pkg_name uptwod_resp
local mode_arg=${args[build_mode]} version_mode=${args[version]}
local app_name_l=${args[app_name],,}
local dl_from=${args[dl_from]}
@@ -203,25 +214,31 @@ build_rv() {
abort "UNREACHABLE $LINENO"
fi
fi
+ if [ "$dl_from" = apkmirror ]; then
+ pkg_name=$(get_apkmirror_pkg_name "${args[apkmirror_dlurl]}")
+ elif [ "$dl_from" = uptodown ]; then
+ uptwod_resp=$(get_uptodown_resp "$app_name_l")
+ pkg_name=$(get_uptodown_pkg_name "$app_name_l")
+ fi
- pkg_name=$(get_apkmirror_pkg_name "${args[apkmirror_dlurl]}")
- if [ "$version_mode" = auto ] && [ "$dl_from" = apkmirror ]; then
+ local get_latest_ver=false
+ if [ "$version_mode" = auto ]; then
version=$(get_patch_last_supported_ver "$pkg_name")
- if [ -z "$version" ]; then
- version=$(get_apkmirror_vers "${args[apkmirror_dlurl]##*/}" "${args[allow_alpha_version]}" | get_largest_ver)
- fi
+ if [ -z "$version" ]; then get_latest_ver=true; fi
elif [ "$version_mode" = latest ]; then
- if [ "$dl_from" = apkmirror ]; then
- version=$(get_apkmirror_vers "${args[apkmirror_dlurl]##*/}" "${args[allow_alpha_version]}" | get_largest_ver)
- elif [ "$dl_from" = uptodown ]; then
- version=$(get_uptodown_ver "${app_name_l}")
- fi
- patcher_args="$patcher_args --experimental"
+ get_latest_ver=true
else
version=$version_mode
patcher_args="$patcher_args --experimental"
fi
- if [ -z "${version}" ]; then
+ if [ $get_latest_ver = true ]; then
+ if [ "$dl_from" = apkmirror ]; then
+ version=$(get_apkmirror_vers "${args[apkmirror_dlurl]##*/}" "${args[allow_alpha_version]}" | get_largest_ver)
+ elif [ "$dl_from" = uptodown ]; then
+ version=$(get_uptodown_vers "$uptwod_resp" | get_largest_ver)
+ fi
+ fi
+ if [ -z "$version" ]; then
echo "ERROR: empty version"
return 1
fi
@@ -242,8 +259,8 @@ build_rv() {
return 1
fi
elif [ "$dl_from" = uptodown ]; then
- echo "Downloading the latest version of '${args[app_name]}' from Uptodown"
- if ! dl_uptodown "$app_name_l" "$stock_apk"; then
+ echo "Downloading '${args[app_name]}' from Uptodown"
+ if ! dl_uptodown "$uptwod_resp" "$version" "$stock_apk"; then
echo "ERROR: Could not download ${args[app_name]}"
return 1
fi