Files
pi-config/skills/project-diagramming-archify/publish-maps.sh
Sam Rolfe 8223003515 project-diagramming-archify: add publish-maps.sh — rsync docs/ to maps site behind Caddy on .35
- publish-maps.sh: incremental/atomic rsync of <project>/docs to maps.lab.audasmedia.com.au/<project>/docs (excludes visual-check sidecars)
- SKILL.md: document publish step after deliver + site URL
- maps.lab.audasmedia.com.au served by Caddy on .35 (file_server browse, no auth)
2026-09-06 12:41:06 +10:00

51 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# publish-maps.sh — publish a project's docs/ (Archify maps, Mermaid sources,
# diagrams) to the central maps site behind Caddy on .35.
#
# URL: https://maps.lab.audasmedia.com.au/<project>/docs/ (file_server browse)
# Host: sam@192.168.20.35:/Docker/Containers/caddy/maps/
#
# Usage:
# publish-maps.sh [<project-dir>] # default: current directory
# publish-maps.sh --list # list what's already published
#
# Incremental + atomic (rsync -az): only changed blocks transfer; files are
# renamed into place so a failure mid-run can't leave a half-written map.
set -euo pipefail
REMOTE="sam@192.168.20.35"
DEST_ROOT="/Docker/Containers/caddy/maps"
SSH_E="-e ssh -o BatchMode=yes -o ConnectTimeout=8"
if [[ "${1:-}" == "--list" ]]; then
ssh -o BatchMode=yes -o ConnectTimeout=8 "$REMOTE" "ls -1 $DEST_ROOT" \
|| { echo "cannot reach $REMOTE" >&2; exit 1; }
exit 0
fi
PROJ="${1:-$(pwd)}"
PROJ="$(cd "$PROJ" && pwd)"
NAME="$(basename "$PROJ")"
DOCS="$PROJ/docs"
if [[ ! -d "$DOCS" ]]; then
echo "no docs/ found in $PROJ — nothing to publish" >&2
exit 1
fi
DEST="$DEST_ROOT/$NAME/docs"
echo "→ publishing $PROJ/docs → $REMOTE:$DEST"
# Create the project's parent dir on the remote (rsync won't make nested parents)
ssh -o BatchMode=yes -o ConnectTimeout=8 "$REMOTE" "mkdir -p $DEST" \
|| { echo "cannot create $DEST on $REMOTE" >&2; exit 1; }
# -a archive, -z compress, --exclude Archify visual-check sidecars (screenshots
# + receipts live next to the map; keeps the browse index clean)
rsync -az \
--exclude '*.visual-check.*' \
"$SSH_E" \
"$DOCS/" "$REMOTE:$DEST/"
echo "✓ published: https://maps.lab.audasmedia.com.au/$NAME/docs/"
echo " (site index: https://maps.lab.audasmedia.com.au/)"