Merge pull request #2882 from Aqr-K/dev-update

This commit is contained in:
jxxghp
2024-10-20 16:58:51 +08:00
committed by GitHub
+62 -40
View File
@@ -192,44 +192,73 @@ function test_connectivity_github() {
esac esac
} }
# 版本号比较
function compare_versions() { function compare_versions() {
local v1="$1" local v1="$1"
local v2="$2" local v2="$2"
local parts1=() # 去掉开头的 v 或 V
local parts2=() v1="${v1#[vV]}"
IFS='.-' read -ra parts1 <<< "$v1" v2="${v2#[vV]}"
IFS='.-' read -ra parts2 <<< "$v2" local current_ver_parts=()
local release_ver_parts=()
IFS='.-' read -ra current_ver_parts <<< "$v1"
IFS='.-' read -ra release_ver_parts <<< "$v2"
local i local i
for ((i = 0; i < ${#parts1[@]} || i < ${#parts2[@]}; i++)); do local current_ver
local part1="${parts1[i]:-0}" local release_ver
local part2="${parts2[i]:-0}"
if [[ $part1 =~ ^[0-9]+$ && $part2 =~ ^[0-9]+$ ]]; then for ((i = 0; i < ${#current_ver_parts[@]} || i < ${#release_ver_parts[@]}; i++)); do
if ((part1 > part2)); then # 版本号不足位补 0
return 1 local current_ver_part="${current_ver_parts[i]:-0}"
elif ((part1 < part2)); then local release_ver_part="${release_ver_parts[i]:-0}"
return 2 current_ver=$(get_priority "$current_ver_part")
fi release_ver=$(get_priority "$release_ver_part")
# 任意一个为-5,不在合法版本号内,无法比较
if (( current_ver == -5 || release_ver == -5 )); then
ERROR "存在不合法版本号,无法判断,跳过更新步骤..."
return 1
else else
# 定义一个非数字的排序顺序的优先级,特殊后缀版本比较 if (( current_ver > release_ver )); then
local order=(alpha beta rc stable) WARN "当前版本高于远程版本,跳过更新步骤..."
local index1=-1 return 1
local index2=-1 elif (( current_ver < release_ver )); then
for ((j = 0; j < ${#order[@]}; j++)); do INFO "发现新版本,开始自动升级..."
if [[ $part1 = "${order[j]}" ]]; then install_backend_and_download_resources "tags/${release_ver}.zip"
index1=$j return 0
fi else
if [[ $part2 = "${order[j]}" ]]; then WARN "当前版本已是最新版本,跳过更新步骤..."
index2=$j
fi
done
if ((index1 > index2)); then
return 1 return 1
elif ((index1 < index2)); then
return 2
fi fi
fi fi
done done
return 0 }
# 优先级转换
function get_priority() {
local version="$1"
if [[ $version =~ ^[0-9]+$ ]]; then
echo $version
else
case $version in
"stable")
echo -1
;;
"rc")
echo -2
;;
"beta")
echo -3
;;
"alpha")
echo -4
;;
# 非数字的不合法版本号
*)
echo -5
;;
esac
fi
} }
if [[ "${MOVIEPILOT_AUTO_UPDATE}" = "true" ]] || [[ "${MOVIEPILOT_AUTO_UPDATE}" = "release" ]] || [[ "${MOVIEPILOT_AUTO_UPDATE}" = "dev" ]]; then if [[ "${MOVIEPILOT_AUTO_UPDATE}" = "true" ]] || [[ "${MOVIEPILOT_AUTO_UPDATE}" = "release" ]] || [[ "${MOVIEPILOT_AUTO_UPDATE}" = "dev" ]]; then
@@ -263,23 +292,16 @@ if [[ "${MOVIEPILOT_AUTO_UPDATE}" = "true" ]] || [[ "${MOVIEPILOT_AUTO_UPDATE}"
install_backend_and_download_resources "heads/main.zip" install_backend_and_download_resources "heads/main.zip"
else else
INFO "Release 更新模式" INFO "Release 更新模式"
old_version=$(cat /app/version.py) old_version=$(grep -m -1 "^\s*APP_VERSION\s*=\s*" /app/version.py | tr -d '\r\n' | awk -F'#' '{print $1}' | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')
if [[ "${old_version}" == *APP_VERSION* ]]; then if [[ "${old_version}" == *APP_VERSION* ]]; then
current_version=v$(echo "${old_version}" | sed -ne "s/APP_VERSION\s=\s'v\(.*\)'/\1/gp") current_version=$(echo "${old_version}" | sed -rn "s/APP_VERSION\s*=\s*['\"](.*)['\"]/\1/gp")
INFO "当前版本号:${current_version}" INFO "当前版本号:${current_version}"
new_version=$(curl ${CURL_OPTIONS} "https://api.github.com/repos/jxxghp/MoviePilot/releases/latest" ${CURL_HEADERS} | jq -r .tag_name) new_version=$(curl ${CURL_OPTIONS} "https://api.github.com/repos/jxxghp/MoviePilot/releases/latest" ${CURL_HEADERS} | jq -r .tag_name | tr -d '\r\n')
if [[ "${new_version}" == *v* ]]; then if [[ "${new_version}" == *v* ]]; then
release_version=${new_version} release_version=${new_version}
INFO "最新版本号:${release_version}" INFO "最新版本号:${release_version}"
# 使用版本号比较函数进行比较 # 使用版本号比较函数进行比较
if compare_versions "${current_version}" "${release_version}"; then compare_versions "${current_version}" "${release_version}"
WARN "当前版本已是最新版本,跳过更新步骤..."
elif [ $? -eq 2 ]; then
INFO "发现新版本,开始自动升级..."
install_backend_and_download_resources "tags/${release_version}.zip"
else
WARN "当前版本高于远程版本,跳过更新步骤..."
fi
else else
WARN "最新版本号获取失败,继续启动..." WARN "最新版本号获取失败,继续启动..."
fi fi