#!/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