1+ #! /bin/bash
2+
3+ # === 参数 ===
4+ if [ -z " $1 " ]; then
5+ COMMIT_MSG=" Update notes"
6+ else
7+ COMMIT_MSG=" $1 "
8+ fi
9+
10+ # === 路径 ===
11+ TYP_FILE=" notes/main.typ"
12+ TINYMIST_HTML=" notes/main.html"
13+ OUT_DIR=" static/notes"
14+ OUT_FILE=" ${OUT_DIR} /index.html"
15+
16+ # === Windows 下的 typst 路径 ===
17+ TYPST_WIN_PATH=" /c/Users/thinkbook-cxy/AppData/Local/Microsoft/WinGet/Packages/Typst.Typst_Microsoft.Winget.Source_8wekyb3d8bbwe/typst-x86_64-pc-windows-msvc/typst.exe"
18+
19+ # === 检查 Typst ===
20+ if [ -f " $TYPST_WIN_PATH " ]; then
21+ TYPST_CMD=" $TYPST_WIN_PATH "
22+ elif command -v typst & > /dev/null; then
23+ TYPST_CMD=" typst"
24+ else
25+ echo " ❌ typst 未安装,请先安装 Typst CLI。"
26+ exit 1
27+ fi
28+
29+ mkdir -p " $OUT_DIR "
30+
31+ echo " ------------------------------------------------------"
32+ echo " 📄 更新 Typst 笔记中..."
33+ echo " ------------------------------------------------------"
34+
35+ # === 使用 Tinymist 输出的 HTML(如果存在) ===
36+ if [ -f " $TINYMIST_HTML " ]; then
37+ echo " ✅ 检测到 VSCode Tinymist 导出的 HTML: $TINYMIST_HTML "
38+ cp " $TINYMIST_HTML " " $OUT_FILE "
39+ echo " ✅ 已复制到: $OUT_FILE "
40+
41+ # === 否则用 typst CLI 自动编译 ===
42+ else
43+ echo " ℹ️ 未发现 Tinymist HTML,使用 typst CLI 编译..."
44+
45+ # 方法1:先编译为 PDF,然后如果有工具可以转换为 HTML
46+ # "$TYPST_CMD" compile "$TYP_FILE" "${OUT_DIR}/notes.pdf"
47+ # echo "✅ 已编译为 PDF: ${OUT_DIR}/notes.pdf"
48+
49+ # 方法2:创建一个简单的 HTML 占位符
50+ cat > " $OUT_FILE " << 'EOF '
51+ <!DOCTYPE html>
52+ <html>
53+ <head>
54+ <title>Notes</title>
55+ <meta charset="utf-8">
56+ <style>
57+ body { font-family: Arial, sans-serif; margin: 40px; }
58+ .notice { background: #f0f0f0; padding: 20px; border-radius: 5px; }
59+ </style>
60+ </head>
61+ <body>
62+ <div class="notice">
63+ <h1>📝 Notes</h1>
64+ <p>Typst 文档需要手动编译或使用 Tinymist 导出 HTML。</p>
65+ <p>当前时间: <span id="datetime"></span></p>
66+ <p>源文件: <code>notes/main.typ</code></p>
67+ </div>
68+ <script>
69+ document.getElementById('datetime').textContent = new Date().toLocaleString();
70+ </script>
71+ </body>
72+ </html>
73+ EOF
74+ echo " ✅ 已创建 HTML 占位符: $OUT_FILE "
75+ fi
76+
77+ # === Git 操作 ===
78+ echo " 📦 执行 git add/commit/push"
79+
80+ git add " $TYP_FILE " " $OUT_FILE "
81+
82+ git commit -m " $COMMIT_MSG "
83+ if [ $? -ne 0 ]; then
84+ echo " ℹ️ 没有变化,无需 push。"
85+ exit 0
86+ fi
87+
88+ git push
89+ if [ $? -eq 0 ]; then
90+ echo " ✅ Push 完成!GitHub Pages 将自动部署。"
91+ else
92+ echo " ❌ Push 失败,请检查网络或权限。"
93+ fi
0 commit comments