Skip to content

Commit 29c3f3f

Browse files
committed
20251107
1 parent 2df3bd0 commit 29c3f3f

File tree

3 files changed

+56
-106
lines changed

3 files changed

+56
-106
lines changed

.vscode/settings.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"triggerTaskOnSave.tasks": {
3+
"**/notes/*.typ": "Auto Update Notes"
4+
}
5+
}

.vscode/tasks.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": "2.0.0",
3+
"tasks": [
4+
{
5+
"label": "Auto Update Notes",
6+
"type": "shell",
7+
"command": "./update-notes.sh",
8+
"args": ["auto update"],
9+
"problemMatcher": []
10+
}
11+
]
12+
}

update-notes.sh

Lines changed: 39 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,3 @@
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-
791
#!/bin/bash
802

813
# === 参数 ===
@@ -85,55 +7,66 @@ else
857
COMMIT_MSG="$1"
868
fi
879

10+
# === 切换到脚本所在目录(避免 VSCode 工作目录不同)===
11+
cd "$(dirname "$0")"
12+
8813
# === 路径 ===
8914
TYP_FILE="notes/main.typ"
9015
OUT_DIR="static/notes"
91-
OUT_FILE="${OUT_DIR}/notes.pdf"
16+
OUT_PDF="${OUT_DIR}/notes.pdf"
9217

93-
# === Windows 下 Typst 可执行文件 ===
94-
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+
mkdir -p "$OUT_DIR"
9519

96-
# === 检查 Typst ===
97-
if [ -f "$TYPST_WIN_PATH" ]; then
98-
TYPST_CMD="$TYPST_WIN_PATH"
99-
elif command -v typst &> /dev/null; then
100-
TYPST_CMD="typst"
101-
else
102-
echo "❌ typst 未安装,请先安装 Typst CLI。"
20+
# === Typst 编译(PDF) ===
21+
echo "📄 编译 Typst PDF..."
22+
typst compile "$TYP_FILE" "$OUT_PDF"
23+
24+
if [ $? -ne 0 ]; then
25+
echo "❌ Typst 编译失败"
10326
exit 1
10427
fi
10528

106-
mkdir -p "$OUT_DIR"
107-
108-
echo "------------------------------------------------------"
109-
echo "📄 编译 Typst PDF 中..."
110-
echo "------------------------------------------------------"
29+
# === 记录 push 时间 ===
30+
PUSH_LOG=".last_push_time"
11131

112-
# === 编译 PDF ===
113-
$TYPST_CMD compile "$TYP_FILE" "$OUT_FILE"
114-
EXITCODE=$?
32+
# === 获取当前时间(秒)===
33+
NOW=$(date +%s)
11534

116-
if [ $EXITCODE -ne 0 ]; then
117-
echo "❌ Typst PDF 编译失败 (exit $EXITCODE)"
118-
exit 1
35+
# === 获取上次 push 时间 ===
36+
if [ -f "$PUSH_LOG" ]; then
37+
LAST_PUSH=$(cat "$PUSH_LOG")
38+
else
39+
LAST_PUSH=0
11940
fi
12041

121-
echo "✅ PDF 已输出到: $OUT_FILE"
42+
# 冷却时间:600 秒 = 10 分钟
43+
COOL_DOWN=600
12244

123-
# === Git 操作 ===
124-
echo "📦 执行 git add/commit/push"
125-
126-
git add "$TYP_FILE" "$OUT_FILE"
45+
# === Git: add & commit ===
46+
git add "$TYP_FILE" "$OUT_PDF"
12747

12848
git commit -m "$COMMIT_MSG"
12949
if [ $? -ne 0 ]; then
130-
echo "ℹ️ 没有变化,无需 push。"
50+
echo "ℹ️ 没变化,不需要 commit/push。"
51+
exit 0
52+
fi
53+
54+
# === 判断是否需要 push ===
55+
SINCE_PUSH=$(( NOW - LAST_PUSH ))
56+
57+
if [ "$SINCE_PUSH" -lt "$COOL_DOWN" ]; then
58+
echo "⏳ 最近 $((SINCE_PUSH/60)) 分钟内 push 过(冷却时间 10 分钟)"
59+
echo "✅ 本地 commit 完成,但暂时不 push。"
13160
exit 0
13261
fi
13362

63+
# === Push ===
64+
echo "🚀 正在 push 到 GitHub..."
13465
git push
66+
13567
if [ $? -eq 0 ]; then
136-
echo "✅ Push 完成!GitHub Pages 将自动部署。"
68+
echo "$NOW" > "$PUSH_LOG"
69+
echo "✅ Push 完成!并更新 push 时间记录。"
13770
else
13871
echo "❌ Push 失败,请检查网络或权限。"
13972
fi

0 commit comments

Comments
 (0)