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 路径(Git Bash 风格路径) ===
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(需 >= 0.13 才有较完善的 HTML 实验特性)。"
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 自动编译为 HTML(实验性,需要开启 features html) ===
42+ # else
43+ # echo "ℹ️ 未发现 Tinymist HTML,尝试使用 typst CLI 编译为 HTML(实验性)..."
44+
45+ # # 使用环境变量 + 命令行开关开启 HTML 导出
46+ # TYPST_FEATURES=html \
47+ # "$TYPST_CMD" compile "$TYP_FILE" --format html --features html "$OUT_FILE"
48+ # EXIT_CODE=$?
49+
50+ # if [ $EXIT_CODE -ne 0 ]; then
51+ # echo "❌ Typst 编译为 HTML 失败(exit code: $EXIT_CODE)。"
52+ # echo " - 请检查 Typst 版本是否支持 HTML 导出(需开启 html feature)"
53+ # echo " - 或在 VSCode 用 Tinymist 手动导出 notes/main.html 后再运行本脚本。"
54+ # exit 1
55+ # fi
56+
57+ # echo "✅ Typst CLI 编译完成: $OUT_FILE"
58+ # fi
59+
60+ # # === Git 操作 ===
61+ # echo "📦 执行 git add/commit/push"
62+
63+ # git add "$TYP_FILE" "$OUT_FILE"
64+
65+ # git commit -m "$COMMIT_MSG"
66+ # if [ $? -ne 0 ]; then
67+ # echo "ℹ️ 没有变化,无需 push。"
68+ # exit 0
69+ # fi
70+
71+ # git push
72+ # if [ $? -eq 0 ]; then
73+ # echo "✅ Push 完成!GitHub Pages 将自动部署。"
74+ # else
75+ # echo "❌ Push 失败,请检查网络或权限。"
76+ # fi
77+
78+
179#! /bin/bash
280
381# === 参数 ===
987
1088# === 路径 ===
1189TYP_FILE=" notes/main.typ"
12- TINYMIST_HTML=" notes/main.html"
1390OUT_DIR=" static/notes"
14- OUT_FILE=" ${OUT_DIR} /index.html "
91+ OUT_FILE=" ${OUT_DIR} /notes.pdf "
1592
16- # === Windows 下的 typst 路径 ===
93+ # === Windows 下 Typst 可执行文件 ===
1794TYPST_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"
1895
1996# === 检查 Typst ===
29106mkdir -p " $OUT_DIR "
30107
31108echo " ------------------------------------------------------"
32- echo " 📄 更新 Typst 笔记中 ..."
109+ echo " 📄 编译 Typst PDF 中 ..."
33110echo " ------------------------------------------------------"
34111
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 "
112+ # === 编译 PDF ===
113+ $TYPST_CMD compile " $TYP_FILE " " $OUT_FILE "
114+ EXITCODE=$?
40115
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 "
116+ if [ $EXITCODE -ne 0 ]; then
117+ echo " ❌ Typst PDF 编译失败 (exit $EXITCODE )"
118+ exit 1
75119fi
76120
121+ echo " ✅ PDF 已输出到: $OUT_FILE "
122+
77123# === Git 操作 ===
78124echo " 📦 执行 git add/commit/push"
79125
@@ -90,4 +136,4 @@ if [ $? -eq 0 ]; then
90136 echo " ✅ Push 完成!GitHub Pages 将自动部署。"
91137else
92138 echo " ❌ Push 失败,请检查网络或权限。"
93- fi
139+ fi
0 commit comments