#!/bin/bash # Sync bidirectionnelle MkDocs <-> Gitea (202601docs) # Usage: ./sync.sh [push|pull|auto] DOCS_DIR="/home/lionel/talloires-v2/mkdocs" LOG_FILE="$DOCS_DIR/sync.log" REMOTE="origin" BRANCH="main" cd "$DOCS_DIR" || exit 1 log() { echo "$(date +%Y-%m-%d %H:%M:%S): $1" >> "$LOG_FILE" } # Fetch latest from remote git fetch "$REMOTE" "$BRANCH" --quiet 2>/dev/null LOCAL=$(git rev-parse HEAD 2>/dev/null) REMOTE_REV=$(git rev-parse "$REMOTE/$BRANCH" 2>/dev/null) case "${1:-auto}" in push) # Push local changes to Gitea git add -A if ! git diff --cached --quiet; then git commit -m "Auto-sync: $(date +%Y-%m-%d %H:%M)" git push "$REMOTE" "$BRANCH" --quiet log "Pushed local changes to Gitea" else log "Nothing to push" fi ;; pull) # Pull from Gitea if [ "$LOCAL" != "$REMOTE_REV" ]; then git pull "$REMOTE" "$BRANCH" --quiet log "Pulled changes from Gitea" docker kill --signal=SIGHUP mkdocs 2>/dev/null || docker restart mkdocs log "Triggered MkDocs rebuild" else log "Already up to date" fi ;; auto) # Auto: pull first, then push local changes # Check for remote changes if [ "$LOCAL" != "$REMOTE_REV" ]; then git stash --quiet 2>/dev/null git pull "$REMOTE" "$BRANCH" --quiet git stash pop --quiet 2>/dev/null log "Pulled changes from Gitea" fi # Check for local changes git add -A if ! git diff --cached --quiet; then git commit -m "Auto-sync: $(date +%Y-%m-%d %H:%M)" git push "$REMOTE" "$BRANCH" --quiet log "Pushed local changes to Gitea" docker kill --signal=SIGHUP mkdocs 2>/dev/null || docker restart mkdocs log "Triggered MkDocs rebuild" fi ;; esac