Files
cellular-proxy/scripts/online-upgrade.sh
T

62 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# 在线一键增量升级入口(给已安装的 cpxy 调用)
# 用法: sudo cpxy upgrade
# sudo cpxy upgrade --ui-only
# sudo cpxy upgrade --force-binary
# sudo cpxy upgrade --verify
set -euo pipefail
BASE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# 若作为独立脚本在 /opt/.../scripts/online-upgrade.sh
if [[ -f "$BASE/etc/settings.conf" ]]; then
:
elif [[ -f "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../etc/settings.conf" ]]; then
BASE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
fi
GITEA_BASE="${GITEA_BASE:-https://gitea.chickliu.fun}"
REPO_OWNER="${REPO_OWNER:-Hermes}"
REPO_NAME="${REPO_NAME:-cellular-proxy}"
BRANCH="${BRANCH:-main}"
INSTALL_URL="${CELLULAR_PROXY_INSTALL_URL:-${GITEA_BASE}/${REPO_OWNER}/${REPO_NAME}/raw/branch/${BRANCH}/install.sh}"
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
echo "请用 root: sudo cpxy upgrade $*" >&2
exit 1
fi
# 从 settings 读 INSTALL_DIR
if [[ -f "${CONFIG_FILE:-$BASE/etc/settings.conf}" ]]; then
# shellcheck disable=SC1090
set -a
# shellcheck disable=SC1090
source "${CONFIG_FILE:-$BASE/etc/settings.conf}"
set +a
fi
INSTALL_DIR="${INSTALL_DIR:-$BASE}"
export INSTALL_DIR
args=(--upgrade)
# 透传用户参数(已是 upgrade 子参数)
while [[ $# -gt 0 ]]; do
args+=("$1")
shift
done
echo "[$(date '+%F %T')] INFO 一键升级: $INSTALL_URL ${args[*]}" >&2
tmp="$(mktemp)"
trap 'rm -f "$tmp"' EXIT
if command -v curl >/dev/null 2>&1; then
curl -fsSL --retry 3 --connect-timeout 20 -o "$tmp" "$INSTALL_URL"
elif command -v wget >/dev/null 2>&1; then
wget -q -O "$tmp" "$INSTALL_URL"
else
echo "需要 curl 或 wget" >&2
exit 1
fi
chmod +x "$tmp"
# 把 install-dir 固定到当前实例
bash "$tmp" --install-dir "$INSTALL_DIR" "${args[@]}"