wiki_ghostguild/scripts/export-content-cron.sh
Jennie Robinson Faber 16aef35682 Nest exported wiki docs under collection/parent folders
Outline docs with the same title under different parents (e.g. Peer Support
Playbook > Session Guides > Session 0 vs Manual > Session Content > Session 0)
were silently overwriting each other under the flat {collection}--{title}.md
naming, dropping 9 of 99 docs on every export. Use the full slugified doc
path instead, and have orphan cleanup scope to known collection-slug roots
(sweeping legacy flat files too) so sibling dirs like hub/, _local/, .claude/
stay untouched.

Also switch the cron's git add to -A so doc deletions and renames in Outline
actually propagate.
2026-04-21 13:12:19 +01:00

39 lines
1.2 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
# Daily wiki content export — run via cron:
# 0 4 * * * /path/to/wiki-ghostguild/scripts/export-content-cron.sh >> /var/log/wiki-export.log 2>&1
REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)"
cd "$REPO_DIR"
# Source env vars from outline.env if it exists (for host-based cron),
# otherwise rely on env vars from docker-compose env_file
if [[ -f outline.env ]]; then
while IFS='=' read -r key value; do
[[ -z "$key" || "$key" =~ ^# ]] && continue
export "$key=$value"
done < outline.env
fi
# Map Outline's URL to OUTLINE_URL if not already set
export OUTLINE_URL="${OUTLINE_URL:-${URL:-}}"
# Support both OUTLINE_API_KEY (outline.env) and OUTLINE_API_TOKEN (scripts)
export OUTLINE_API_TOKEN="${OUTLINE_API_TOKEN:-${OUTLINE_API_KEY:-}}"
if [[ -z "${OUTLINE_API_TOKEN:-}" ]]; then
echo "Error: OUTLINE_API_TOKEN or OUTLINE_API_KEY must be set" >&2
exit 1
fi
# Run export
node scripts/export-content.js
# Commit and push if there are changes. -A stages deletions and renames too,
# so docs removed or renamed in Outline actually propagate to git.
git add -A content/wiki/
if ! git diff --cached --quiet; then
git commit -m "wiki content export $(date +%Y-%m-%d)"
git push
fi