|
6 | 6 | set -euo pipefail |
7 | 7 |
|
8 | 8 | # --- Configuration --- |
| 9 | +EDITION="${EDITION:-zh}" # zh=汉化版, en=官方原版 |
9 | 10 | INSTALL_DIR="${OPENCLAW_HOME:-$HOME/.openclaw-bin}" |
10 | 11 | R2_BASE="https://dl.qrj.ai/openclaw-standalone" |
11 | 12 | GITHUB_BASE="https://github.com/qingchencloud/openclaw-standalone/releases/download" |
12 | 13 |
|
| 14 | +if [ "$EDITION" = "en" ]; then |
| 15 | + ARCHIVE_PREFIX="openclaw" |
| 16 | + EDITION_LABEL="官方原版" |
| 17 | +else |
| 18 | + EDITION="zh" |
| 19 | + ARCHIVE_PREFIX="openclaw-zh" |
| 20 | + EDITION_LABEL="汉化版" |
| 21 | +fi |
| 22 | + |
13 | 23 | # --- Colors --- |
14 | 24 | RED='\033[0;31m' |
15 | 25 | GREEN='\033[0;32m' |
@@ -46,19 +56,39 @@ detect_platform() { |
46 | 56 |
|
47 | 57 | # --- Get latest version --- |
48 | 58 | get_latest_version() { |
49 | | - local version="" |
| 59 | + local version="" json="" |
50 | 60 | # Try R2 first |
| 61 | + # 新格式: editions.<EDITION>.version;旧格式兼容: .version |
51 | 62 | if command -v curl &>/dev/null; then |
52 | | - version=$(curl -fsSL --connect-timeout 5 "$R2_BASE/latest.json" 2>/dev/null | \ |
53 | | - grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | \ |
54 | | - grep -o '"[^"]*"$' | tr -d '"') || true |
| 63 | + json=$(curl -fsSL --connect-timeout 5 "$R2_BASE/latest.json" 2>/dev/null) || true |
| 64 | + if [ -n "$json" ]; then |
| 65 | + # 先尝试新格式 editions.<EDITION>.version |
| 66 | + version=$(echo "$json" | grep -o "\"$EDITION\"[^}]*\"version\"[[:space:]]*:[[:space:]]*\"[^\"]*\"" | \ |
| 67 | + grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' | \ |
| 68 | + grep -o '"[^"]*"$' | tr -d '"') || true |
| 69 | + # 回退旧格式 .version(取第一个 version 字段) |
| 70 | + if [ -z "$version" ]; then |
| 71 | + version=$(echo "$json" | \ |
| 72 | + grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | \ |
| 73 | + grep -o '"[^"]*"$' | tr -d '"') || true |
| 74 | + fi |
| 75 | + fi |
55 | 76 | fi |
56 | | - # Fallback: GitHub API |
| 77 | + # Fallback: GitHub API(tag 基于汉化版版本号,两个版本文件都在同一个 release 下) |
57 | 78 | if [ -z "$version" ]; then |
58 | | - version=$(curl -fsSL --connect-timeout 5 \ |
| 79 | + local tag_ver |
| 80 | + tag_ver=$(curl -fsSL --connect-timeout 5 \ |
59 | 81 | "https://api.github.com/repos/qingchencloud/openclaw-standalone/releases/latest" 2>/dev/null | \ |
60 | 82 | grep -o '"tag_name"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | \ |
61 | 83 | grep -o '"[^"]*"$' | tr -d '"v') || true |
| 84 | + if [ -n "$tag_ver" ]; then |
| 85 | + if [ "$EDITION" = "en" ]; then |
| 86 | + # 官方版版本号 = 去掉 -zh.N 后缀 |
| 87 | + version=$(echo "$tag_ver" | sed 's/-zh\.[0-9]*$//') |
| 88 | + else |
| 89 | + version="$tag_ver" |
| 90 | + fi |
| 91 | + fi |
62 | 92 | fi |
63 | 93 | if [ -z "$version" ]; then |
64 | 94 | error "无法获取最新版本号。请检查网络连接或手动下载安装。" |
@@ -92,13 +122,24 @@ main() { |
92 | 122 |
|
93 | 123 | PLATFORM=$(detect_platform) |
94 | 124 | info "检测到平台: $PLATFORM" |
| 125 | + info "版本: $EDITION_LABEL ($EDITION)" |
95 | 126 |
|
96 | 127 | VERSION=$(get_latest_version) |
97 | 128 | info "最新版本: $VERSION" |
98 | 129 |
|
99 | | - ARCHIVE="openclaw-${VERSION}-${PLATFORM}.tar.gz" |
100 | | - DOWNLOAD_URL="${R2_BASE}/${VERSION}/${ARCHIVE}" |
101 | | - GITHUB_URL="${GITHUB_BASE}/v${VERSION}/${ARCHIVE}" |
| 130 | + ARCHIVE="${ARCHIVE_PREFIX}-${VERSION}-${PLATFORM}.tar.gz" |
| 131 | + DOWNLOAD_URL="${R2_BASE}/${EDITION}/${VERSION}/${ARCHIVE}" |
| 132 | + # GitHub release tag 统一用汉化版版本号,两个版本的文件都在同一个 release 下 |
| 133 | + if [ "$EDITION" = "en" ]; then |
| 134 | + # 需要从 R2 或 GitHub API 获取汉化版版本号作为 tag |
| 135 | + GH_TAG_VER=$(curl -fsSL --connect-timeout 5 \ |
| 136 | + "https://api.github.com/repos/qingchencloud/openclaw-standalone/releases/latest" 2>/dev/null | \ |
| 137 | + grep -o '"tag_name"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | \ |
| 138 | + grep -o '"[^"]*"$' | tr -d '"') || true |
| 139 | + GITHUB_URL="${GITHUB_BASE}/${GH_TAG_VER:-v${VERSION}}/${ARCHIVE}" |
| 140 | + else |
| 141 | + GITHUB_URL="${GITHUB_BASE}/v${VERSION}/${ARCHIVE}" |
| 142 | + fi |
102 | 143 | TMP_DIR=$(mktemp -d) |
103 | 144 | TMP_FILE="${TMP_DIR}/${ARCHIVE}" |
104 | 145 |
|
|
0 commit comments