#!/usr/bin/env bash
# 简化升级：自动加载 install.sh 的 --update 流程，保留数据库、凭据和数据。
# 用法：bash upgrade.sh [版本] [install.sh 的其他选项]
set -Eeuo pipefail
set +x

release_url="${HAS_WAF_RELEASE_URL:-https://has-waf.haser.top}"
script_dir=''
if [[ -n "${BASH_SOURCE[0]:-}" && -f "${BASH_SOURCE[0]}" ]]; then
  script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
fi

args=(--update)
if (($#)) && [[ "$1" != -* ]]; then
  args+=(--tag "$1")
  shift
fi
args+=("$@")

if [[ -n "$script_dir" && -f "$script_dir/install.sh" ]]; then
  exec bash "$script_dir/install.sh" "${args[@]}"
fi

command -v curl >/dev/null || { printf 'HAS-WAF: 需要 curl 命令\n' >&2; exit 1; }
installer=$(mktemp)
trap 'rm -f -- "$installer"' EXIT
curl --proto '=https' --tlsv1.2 -fsSL --retry 3 --connect-timeout 15 --max-time 120 \
  "${release_url%/}/install.sh" -o "$installer"
bash "$installer" "${args[@]}"
