-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtmp_npm_mirrors.py
More file actions
70 lines (64 loc) · 3.45 KB
/
Copy pathtmp_npm_mirrors.py
File metadata and controls
70 lines (64 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
with open('/opt/clawgate/apps/web/dist/i', 'r') as f:
lines = f.readlines()
# Find and replace the npm mirror + install section
new_lines = []
skip = False
for i, line in enumerate(lines):
# Start of npm mirror section
if '# npm 镜像' in line:
skip = True
new_lines.append(' # npm 镜像 + 安装 OpenClaw(多源自动切换)\n')
new_lines.append(' NPM_MIRRORS=(\n')
new_lines.append(' "https://registry.npmjs.org" # npm 官方\n')
new_lines.append(' "https://registry.npmmirror.com" # 淘宝镜像\n')
new_lines.append(' "https://mirrors.huaweicloud.com/repository/npm" # 华为镜像\n')
new_lines.append(' "https://mirrors.cloud.tencent.com/npm" # 腾讯镜像\n')
new_lines.append(' )\n')
new_lines.append(' NPM_MIRROR_FOUND=false\n')
new_lines.append(' info "检测 npm 源..."\n')
new_lines.append(' for mirror in "${NPM_MIRRORS[@]}"; do\n')
new_lines.append(' if curl -sf --connect-timeout 5 "$mirror/openclaw" >/dev/null 2>&1; then\n')
new_lines.append(' npm config set registry "$mirror" 2>/dev/null\n')
new_lines.append(' ok "可用源: $mirror"\n')
new_lines.append(' NPM_MIRROR_FOUND=true\n')
new_lines.append(' break\n')
new_lines.append(' fi\n')
new_lines.append(' done\n')
new_lines.append(' if [[ "$NPM_MIRROR_FOUND" == false ]]; then\n')
new_lines.append(' warn "所有镜像源均不可达,尝试直接安装..."\n')
new_lines.append(' fi\n')
new_lines.append('\n')
continue
# Skip old mirror detection
if skip and '# ── 安装 OpenClaw' in line:
skip = False
# Rewrite the install section
new_lines.append(' # ── 安装 OpenClaw(已安装则跳过) ──\n')
new_lines.append(' if [[ "$HAS_OPENCLAW" == false ]]; then\n')
new_lines.append(' S=$((S+1)); step $S $STEPS "安装 OpenClaw"\n')
new_lines.append(' need_sudo\n')
new_lines.append(' INSTALL_OK=false\n')
new_lines.append(' for mirror in "${NPM_MIRRORS[@]}"; do\n')
new_lines.append(' info "尝试从 $mirror 安装..."\n')
new_lines.append(' npm config set registry "$mirror" 2>/dev/null\n')
new_lines.append(' if $SUDO npm install -g openclaw --registry="$mirror" 2>/dev/null; then\n')
new_lines.append(' INSTALL_OK=true\n')
new_lines.append(' ok "安装成功 (源: $mirror)"\n')
new_lines.append(' break\n')
new_lines.append(' fi\n')
new_lines.append(' warn "从 $mirror 安装失败,尝试下一个..."\n')
new_lines.append(' done\n')
new_lines.append(' [[ "$INSTALL_OK" == false ]] && die "所有镜像源均安装失败,请检查网络后重试"\n')
new_lines.append(' hash -r 2>/dev/null\n')
continue
# Skip old install logic until "else" (already installed branch)
if skip:
continue
# Detect end of old install block
if '(已安装,跳过)' in line:
new_lines.append(line)
continue
new_lines.append(line)
with open('/opt/clawgate/apps/web/dist/i', 'w') as f:
f.writelines(new_lines)
print('OK')