feat: 一条 curl 自动装/升(未装安装、已装升级)
This commit is contained in:
Executable
+61
@@ -0,0 +1,61 @@
|
||||
#!/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[@]}"
|
||||
Reference in New Issue
Block a user