- P1: Banner v1.3→v1.5, Hooks 29→34 - P1: 卸载脚本补删 更新Bookworm.lnk - P1: git stash pop 安全检查 - P2: Playwright 检测改用 npm list - P2: 代理端口扫描 500ms async 超时 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
218 lines
12 KiB
Python
218 lines
12 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
更新 guide.html + quick-start.html
|
||
- 添加 OneClick 一键安装器下载
|
||
- 更新版本号: 34 Hooks, v2.0
|
||
- 三平台下载按钮
|
||
"""
|
||
import re, os
|
||
|
||
WEBDIR = '/opt/bookworm-web/public'
|
||
|
||
# ═══════════════════════════════════════
|
||
# 1. guide.html
|
||
# ═══════════════════════════════════════
|
||
guide = os.path.join(WEBDIR, 'guide.html')
|
||
with open(guide, 'r', encoding='utf-8') as f:
|
||
html = f.read()
|
||
|
||
# (a) 版本号 29 Hooks → 34 Hooks
|
||
html = html.replace('29 Hooks', '34 Hooks')
|
||
|
||
# (b) 版本号 v1.5 → v2.0
|
||
html = html.replace('Portable v1.5', 'Portable v2.0')
|
||
html = html.replace('v1.5 |', 'v2.0 |')
|
||
|
||
# (c) 替换单一下载按钮为三平台下载
|
||
old_download = '''<a href="/Bookworm-Setup.bat" download style="display:inline-block;margin-top:1.2rem;padding:0.7rem 2rem;background:var(--accent);color:#000;font-weight:700;border-radius:8px;font-size:1rem;text-decoration:none;transition:opacity 0.2s" onmouseover="this.style.opacity='0.85'" onmouseout="this.style.opacity='1'">⬇ 下载一键安装器</a>'''
|
||
|
||
new_download = '''<div style="display:flex;gap:0.8rem;justify-content:center;margin-top:1.2rem;flex-wrap:wrap">
|
||
<a href="/download/Bookworm-OneClick.bat" download style="display:inline-flex;align-items:center;gap:0.4rem;padding:0.7rem 1.5rem;background:var(--accent);color:#000;font-weight:700;border-radius:8px;font-size:0.95rem;text-decoration:none;transition:opacity 0.2s" onmouseover="this.style.opacity='0.85'" onmouseout="this.style.opacity='1'">⬇ Windows 11 一键安装</a>
|
||
<a href="/download/Bookworm-OneClick-Win10.bat" download style="display:inline-flex;align-items:center;gap:0.4rem;padding:0.7rem 1.5rem;background:var(--purple);color:#000;font-weight:700;border-radius:8px;font-size:0.95rem;text-decoration:none;transition:opacity 0.2s" onmouseover="this.style.opacity='0.85'" onmouseout="this.style.opacity='1'">⬇ Windows 10 一键安装</a>
|
||
<a href="/download/Bookworm-OneClick-Mac.sh" download style="display:inline-flex;align-items:center;gap:0.4rem;padding:0.7rem 1.5rem;background:var(--green);color:#000;font-weight:700;border-radius:8px;font-size:0.95rem;text-decoration:none;transition:opacity 0.2s" onmouseover="this.style.opacity='0.85'" onmouseout="this.style.opacity='1'">⬇ macOS 一键安装</a>
|
||
</div>
|
||
<p style="text-align:center;color:var(--text-dim);font-size:0.8rem;margin-top:0.5rem">全新电脑? 双击即装 — 自动安装 Node.js + Git + Claude Code + Bookworm 配置</p>'''
|
||
|
||
html = html.replace(old_download, new_download)
|
||
|
||
# (d) 更新 "最快方式" 卡片 — 提及全自动
|
||
old_fastest = '''<h3 style="color:var(--green);margin-bottom:0.5rem">最快方式:一键安装器</h3>
|
||
<p style="color:var(--text-dim);font-size:0.9rem;margin-bottom:0.8rem">获取 <strong>Bookworm-Setup.bat</strong> (4KB) → 双击运行 → 输入密码 → 完成</p>
|
||
<p style="font-size:0.8rem;color:var(--text-dim)">安装器自动检测依赖、下载配置、创建桌面快捷方式、启动 Claude Code</p>'''
|
||
|
||
new_fastest = '''<h3 style="color:var(--green);margin-bottom:0.5rem">最快方式:全自动一键安装器 v2.0</h3>
|
||
<p style="color:var(--text-dim);font-size:0.9rem;margin-bottom:0.8rem">下载 <strong>OneClick 安装器</strong> → 双击运行 → 输入密码 → 完成</p>
|
||
<p style="font-size:0.8rem;color:var(--text-dim)">全新电脑零依赖:自动安装 Node.js + Git + Claude Code + 下载配置 + 创建桌面快捷方式</p>
|
||
<div style="display:flex;gap:0.5rem;justify-content:center;margin-top:0.6rem;flex-wrap:wrap;font-size:0.8rem">
|
||
<span style="background:rgba(88,166,255,0.1);border:1px solid rgba(88,166,255,0.3);padding:0.2rem 0.6rem;border-radius:12px">Win 11: winget 自动装</span>
|
||
<span style="background:rgba(188,140,255,0.1);border:1px solid rgba(188,140,255,0.3);padding:0.2rem 0.6rem;border-radius:12px">Win 10: 下载 MSI 静默装</span>
|
||
<span style="background:rgba(63,185,80,0.1);border:1px solid rgba(63,185,80,0.3);padding:0.2rem 0.6rem;border-radius:12px">macOS: Homebrew 自动装</span>
|
||
</div>'''
|
||
|
||
html = html.replace(old_fastest, new_fastest)
|
||
|
||
# (e) 更新手动流程提示
|
||
old_manual = '<p style="text-align:center;color:var(--text-dim);font-size:0.85rem;margin-bottom:0.5rem">手动安装流程:</p>'
|
||
new_manual = '<p style="text-align:center;color:var(--text-dim);font-size:0.85rem;margin-bottom:0.5rem">如需手动安装(一键安装器失败时的备选方案):</p>'
|
||
html = html.replace(old_manual, new_manual)
|
||
|
||
# (f) 更新首次安装行 "快速参考" 表
|
||
old_ref = '<tr><td>首次安装</td><td>git clone + 双击<br><strong>更新并启动Bookworm.bat</strong></td><td><code>pwsh -ExecutionPolicy Bypass -File install.ps1</code></td></tr>'
|
||
new_ref = '<tr><td>首次安装</td><td>双击 <strong>Bookworm-OneClick.bat</strong><br><span style="font-size:0.8rem;color:var(--text-dim)">自动装 Node.js + Git + Claude Code</span></td><td><code>pwsh -ExecutionPolicy Bypass -File install.ps1</code></td></tr>'
|
||
html = html.replace(old_ref, new_ref)
|
||
|
||
# (g) 在 "安装检查清单" 前插入 OneClick 安装段
|
||
oneclick_section = '''
|
||
<!-- ============================================================ -->
|
||
<!-- 全自动安装 (新增 v2.0) -->
|
||
<!-- ============================================================ -->
|
||
<div class="section" id="oneclick">
|
||
<h2><span class="num" style="background:var(--green)">0</span>全自动一键安装 (推荐)</h2>
|
||
|
||
<div class="alert success">
|
||
<span class="alert-icon">⚡</span>
|
||
<div>
|
||
<strong>全新电脑? 从这里开始!</strong><br>
|
||
OneClick 安装器会自动完成所有步骤:安装 Node.js、Git、Claude Code,下载 Bookworm 配置,创建桌面快捷方式。<br>
|
||
你只需要输入 Gitea 密码和主密码。
|
||
</div>
|
||
</div>
|
||
|
||
<table>
|
||
<tr><th>系统</th><th>安装文件</th><th>安装方式</th><th>前提条件</th></tr>
|
||
<tr>
|
||
<td><strong>Windows 11</strong></td>
|
||
<td><a href="/download/Bookworm-OneClick.bat" download>Bookworm-OneClick.bat</a></td>
|
||
<td>winget 自动安装</td>
|
||
<td>无 (winget 内置)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Windows 10</strong></td>
|
||
<td><a href="/download/Bookworm-OneClick-Win10.bat" download>Bookworm-OneClick-Win10.bat</a></td>
|
||
<td>winget 优先, 回退下载 MSI/EXE</td>
|
||
<td>无 (1809+)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>macOS 12+</strong></td>
|
||
<td><a href="/download/Bookworm-OneClick-Mac.sh" download>Bookworm-OneClick-Mac.sh</a></td>
|
||
<td>Homebrew 自动安装</td>
|
||
<td>无 (自动装 Homebrew)</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<div class="step">
|
||
<div class="step-icon green">1</div>
|
||
<div class="step-content">
|
||
<h4>Windows: 下载并双击</h4>
|
||
<p>下载对应版本 → 双击运行 → UAC 点"是" → 按提示输入 Gitea 密码和主密码 → 完成</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="step">
|
||
<div class="step-icon green">2</div>
|
||
<div class="step-content">
|
||
<h4>macOS: 终端一行命令</h4>
|
||
<p>打开终端,粘贴以下命令并回车:</p>
|
||
</div>
|
||
</div>
|
||
<div class="code-block" onclick="copyCode(this)">
|
||
<code><span class="cmd">curl</span> -fsSL -o ~/bookworm-install.sh https://bookworm.letcareme.com/download/Bookworm-OneClick-Mac.sh && <span class="cmd">bash</span> ~/bookworm-install.sh</code>
|
||
</div>
|
||
|
||
<div class="alert info">
|
||
<span class="alert-icon">💡</span>
|
||
<div>
|
||
<strong>OneClick 安装器已包含以下所有步骤</strong><br>
|
||
如果一键安装成功,可跳过下方的手动步骤 1-3,直接查看<a href="#daily">每日使用</a>部分。
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
'''
|
||
|
||
# 在 "安装检查清单" 部分前插入
|
||
checklist_marker = '<!-- ============================================================ -->\n <!-- 安装检查清单 -->'
|
||
html = html.replace(checklist_marker, oneclick_section + ' ' + checklist_marker)
|
||
|
||
# (h) 更新时间首次安装 "约 10 分钟" → 区分 OneClick / 手动
|
||
old_time = '首次安装约 10 分钟(含依赖下载),之后每次双击启动约 10-30 秒'
|
||
new_time = '一键安装约 5 分钟(自动下载依赖),手动安装约 15 分钟。之后每次双击启动约 10-30 秒'
|
||
html = html.replace(old_time, new_time)
|
||
|
||
with open(guide, 'w', encoding='utf-8') as f:
|
||
f.write(html)
|
||
print(f'[OK] guide.html 已更新 ({len(html)} bytes)')
|
||
|
||
# ═══════════════════════════════════════
|
||
# 2. quick-start.html
|
||
# ═══════════════════════════════════════
|
||
qs = os.path.join(WEBDIR, 'quick-start.html')
|
||
with open(qs, 'r', encoding='utf-8') as f:
|
||
qhtml = f.read()
|
||
|
||
# (a) 版本号
|
||
qhtml = qhtml.replace('v1.5 |', 'v2.0 |')
|
||
qhtml = qhtml.replace('29 Hooks', '34 Hooks')
|
||
qhtml = qhtml.replace('Portable v1.5', 'Portable v2.0')
|
||
|
||
# (b) 更新启动流程 — 添加 OneClick
|
||
old_flow = '''<div class="flow">
|
||
<div class="flow-node">开代理</div>
|
||
<span class="flow-arrow">➔</span>
|
||
<div class="flow-node">双击 <strong>Bookworm</strong></div>
|
||
<span class="flow-arrow">➔</span>
|
||
<div class="flow-node">等横幅出现</div>
|
||
<span class="flow-arrow">➔</span>
|
||
<div class="flow-node active">开始工作</div>
|
||
</div>'''
|
||
|
||
new_flow = '''<div class="flow">
|
||
<div class="flow-node">开代理</div>
|
||
<span class="flow-arrow">➔</span>
|
||
<div class="flow-node">双击 <strong>Bookworm</strong></div>
|
||
<span class="flow-arrow">➔</span>
|
||
<div class="flow-node">等横幅出现</div>
|
||
<span class="flow-arrow">➔</span>
|
||
<div class="flow-node active">开始工作</div>
|
||
</div>
|
||
|
||
<div class="card highlight" style="margin-bottom:6px">
|
||
<h3>全新电脑? 用 OneClick 一键安装器</h3>
|
||
<p>下载 <code>Bookworm-OneClick.bat</code> (Win11) / <code>*-Win10.bat</code> (Win10) / <code>*-Mac.sh</code> (macOS) → 双击即装<br>
|
||
<span style="font-size:8pt">自动安装 Node.js + Git + Claude Code + Bookworm,零依赖</span></p>
|
||
</div>'''
|
||
|
||
qhtml = qhtml.replace(old_flow, new_flow)
|
||
|
||
# (c) 启动表添加 OneClick 行
|
||
old_startup_table_end = '<tr><td><span class="dot red"></span><strong>命令行启动</strong></td>'
|
||
new_startup_row = '''<tr><td><span class="dot green"></span><strong>首次安装</strong></td><td>双击 <code>Bookworm-OneClick.bat</code> (全自动装依赖+配置+启动)</td></tr>
|
||
<tr><td><span class="dot red"></span><strong>命令行启动</strong></td>'''
|
||
qhtml = qhtml.replace(old_startup_table_end, new_startup_row)
|
||
|
||
with open(qs, 'w', encoding='utf-8') as f:
|
||
f.write(qhtml)
|
||
print(f'[OK] quick-start.html 已更新 ({len(qhtml)} bytes)')
|
||
|
||
# ═══════════════════════════════════════
|
||
# 3. guide-mac.html (同步版本号)
|
||
# ═══════════════════════════════════════
|
||
guide_mac = os.path.join(WEBDIR, 'guide-mac.html')
|
||
if os.path.exists(guide_mac):
|
||
with open(guide_mac, 'r', encoding='utf-8') as f:
|
||
mhtml = f.read()
|
||
mhtml = mhtml.replace('29 Hooks', '34 Hooks')
|
||
mhtml = mhtml.replace('Portable v1.5', 'Portable v2.0')
|
||
mhtml = mhtml.replace('v1.5 |', 'v2.0 |')
|
||
|
||
# 添加 OneClick Mac 下载按钮 (如有旧按钮替换)
|
||
old_mac_dl = 'Bookworm-Setup.sh'
|
||
new_mac_dl = '/download/Bookworm-OneClick-Mac.sh'
|
||
mhtml = mhtml.replace('href="/Bookworm-Setup.sh"', f'href="{new_mac_dl}"')
|
||
|
||
with open(guide_mac, 'w', encoding='utf-8') as f:
|
||
f.write(mhtml)
|
||
print(f'[OK] guide-mac.html 已更新 ({len(mhtml)} bytes)')
|
||
|
||
print('\n[DONE] 所有页面更新完成')
|