Skip to content

Commit caadf81

Browse files
committed
ci: add Logseq sync workflow
1 parent 8a17fd0 commit caadf81

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
name: Sync Logseq → Quartz Content
2+
3+
on:
4+
push:
5+
branches:
6+
- Admin
7+
paths:
8+
- "pages/**" # only runs when .md files in pages/ actually change
9+
10+
workflow_dispatch: # allows manual trigger from GitHub Actions UI
11+
12+
jobs:
13+
sync:
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: write
17+
18+
steps:
19+
- name: Checkout Admin branch (Logseq source)
20+
uses: actions/checkout@v4
21+
with:
22+
ref: Admin
23+
path: logseq-source
24+
25+
- name: Checkout Web-live branch (Quartz site)
26+
uses: actions/checkout@v4
27+
with:
28+
ref: Web-live
29+
path: quartz-site
30+
token: ${{ secrets.GITHUB_TOKEN }}
31+
32+
- name: Sync pages/ → content/
33+
id: sync
34+
run: |
35+
SOURCE="logseq-source/pages"
36+
DEST="quartz-site/content"
37+
38+
# Count files before
39+
before=$(find "$DEST" -name "*.md" ! -name "index.md" | wc -l)
40+
41+
# Remove stale .md files (deleted from Logseq) but keep index.md
42+
find "$DEST" -name "*.md" ! -name "index.md" -delete
43+
44+
# Copy all .md files from Logseq pages/
45+
cp -r "$SOURCE"/. "$DEST"/
46+
47+
# Restore index.md if it was overwritten (Quartz needs its own index)
48+
cd quartz-site
49+
git checkout HEAD -- content/index.md 2>/dev/null || true
50+
51+
# Count files after
52+
after=$(find "../$DEST" -name "*.md" ! -name "index.md" | wc -l)
53+
echo "files_before=$before" >> $GITHUB_OUTPUT
54+
echo "files_after=$after" >> $GITHUB_OUTPUT
55+
56+
- name: Check for changes
57+
id: changes
58+
run: |
59+
cd quartz-site
60+
git add content/
61+
if git diff --staged --quiet; then
62+
echo "has_changes=false" >> $GITHUB_OUTPUT
63+
echo "No content changes detected — skipping commit."
64+
else
65+
changed=$(git diff --staged --name-only | wc -l)
66+
echo "has_changes=true" >> $GITHUB_OUTPUT
67+
echo "changed_count=$changed" >> $GITHUB_OUTPUT
68+
fi
69+
70+
- name: Commit and push to Web-live
71+
if: steps.changes.outputs.has_changes == 'true'
72+
run: |
73+
cd quartz-site
74+
git config user.name "github-actions[bot]"
75+
git config user.email "github-actions[bot]@users.noreply.github.com"
76+
77+
CHANGED=${{ steps.changes.outputs.changed_count }}
78+
COMMIT_SHA=$(cd ../logseq-source && git rev-parse --short HEAD)
79+
80+
git commit -m "sync: $CHANGED file(s) updated from Logseq (Admin@$COMMIT_SHA)"
81+
git push origin Web-live
82+
83+
- name: Summary
84+
run: |
85+
if [ "${{ steps.changes.outputs.has_changes }}" == "true" ]; then
86+
echo "### ✅ Sync complete" >> $GITHUB_STEP_SUMMARY
87+
echo "- **Files before:** ${{ steps.sync.outputs.files_before }}" >> $GITHUB_STEP_SUMMARY
88+
echo "- **Files after:** ${{ steps.sync.outputs.files_after }}" >> $GITHUB_STEP_SUMMARY
89+
echo "- **Changed:** ${{ steps.changes.outputs.changed_count }} file(s)" >> $GITHUB_STEP_SUMMARY
90+
echo "- Vercel will now redeploy automatically." >> $GITHUB_STEP_SUMMARY
91+
else
92+
echo "### ⏭️ No changes" >> $GITHUB_STEP_SUMMARY
93+
echo "Content was already up to date — no commit made." >> $GITHUB_STEP_SUMMARY
94+
fi

0 commit comments

Comments
 (0)