Files
maa-online/bin/maa-online-update
T
RRRosmontis 58c6debd95 fix(update): 支持通过 MAA_ONLINE_UPDATE_PROXY 经代理更新
主机到 GitHub 的直连会被重置(connection reset by peer),原有 direct()
强制剥离代理导致 maa self update 每次必败。现在可用 MAA_ONLINE_UPDATE_PROXY
指定代理(如 http://127.0.0.1:8118),未设置时保持旧行为。
2026-10-18 20:46:10 +08:00

45 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT="${MAA_ONLINE_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
export HOME="${MAA_ONLINE_HOME:-$ROOT/runtime/home}"
export MAA_CONFIG_DIR="${MAA_CONFIG_DIR:-$ROOT/config}"
MAA_BIN="${MAA_BIN:-$ROOT/runtime/bin/maa}"
retry() {
local attempt
for attempt in 1 2 3; do
if "$@"; then return 0; fi
echo "Attempt ${attempt}/3 failed: $*" >&2
sleep $((attempt * 2))
done
return 1
}
# GitHub 直连被重置时,用 MAA_ONLINE_UPDATE_PROXY 指定代理(如 http://127.0.0.1:8118);
# 未设置时维持"剥离代理"的旧行为,便于在可直连的环境使用。
UPDATE_PROXY="${MAA_ONLINE_UPDATE_PROXY:-}"
direct() {
if [ -n "$UPDATE_PROXY" ]; then
env HTTPS_PROXY="$UPDATE_PROXY" HTTP_PROXY="$UPDATE_PROXY" ALL_PROXY="$UPDATE_PROXY" "$@"
elif [ "${MAA_ONLINE_KEEP_PROXY:-0}" = "1" ]; then
"$@"
else
env -u HTTPS_PROXY -u HTTP_PROXY -u ALL_PROXY "$@"
fi
}
echo '[1/3] Updating maa-cli'
retry direct timeout 90s "$MAA_BIN" self update
echo '[2/3] Updating official MaaCore and base resources'
retry direct timeout 150s "$MAA_BIN" update stable --batch
resource_repo="$HOME/.local/share/maa/MaaResource"
if [ -d "$resource_repo/.git" ]; then git -C "$resource_repo" config http.version HTTP/1.1; fi
echo '[3/3] Updating hot resources'
retry direct timeout 90s "$MAA_BIN" hot-update --batch
echo 'Update workflow completed.'