"Location", never "campus", in everything people read; SC FOH joined with its MIDI links
- pages (NA 98 Locations / 99 Location, re-imported via PAGES_VERSION), keys, settings page, setup and install messages, alerts, docs, the Apollo Beach kit; python3 -m settings.location and /location/... addresses (the old names still answer for installed Macs) - Apply reads the before settings from the file: an in-place edit skipped the watchdog restart - SC: SUPERRACK (+SoundGrid) and X32 EDIT from SC FOH; FOH TRACKS and TRACKS LIGHTS MIDI links watched Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
#!/bin/bash
|
||||
# backup-campuses.sh - every campus's status panel settings, off-site in Google Drive, nightly.
|
||||
# backup-campuses.sh - every location's status panel settings, off-site in Google Drive, nightly.
|
||||
#
|
||||
# The same pattern as the checklist's backup-to-drive.sh on this Mac: a LaunchAgent runs it at 04:30,
|
||||
# it copies into the shared Drive (Waters Creative > Apps > Status Panel Backups > <campus>), keeps
|
||||
# the newest 30 per campus, and emails an alert (through the checklist's alert.js) when something
|
||||
# it copies into the shared Drive (Waters Creative > Apps > Status Panel Backups > <location>), keeps
|
||||
# the newest 30 per location, and emails an alert (through the checklist's alert.js) when something
|
||||
# fails, because a backup nobody hears about failing is no backup.
|
||||
#
|
||||
# Only the hub (North Attleboro: no "home" in campuses.json) does anything; elsewhere it exits, except
|
||||
# on a standalone campus (Apollo Beach), which backs up only itself into ~/Documents/Status Panel Backups.
|
||||
# Each campus is reached over SSH with the panel's own key, as the account it reported. What is
|
||||
# copied: config.json (the settings), history/ (every Apply), the page-key record and the campus
|
||||
# on a standalone location (Apollo Beach), which backs up only itself into ~/Documents/Status Panel Backups.
|
||||
# Each location is reached over SSH with the panel's own key, as the account it reported. What is
|
||||
# copied: config.json (the settings), history/ (every Apply), the page-key record and the location
|
||||
# lists. Never outlets.json (the smart-plug keys stay on their Mac).
|
||||
|
||||
set -uo pipefail
|
||||
@@ -25,13 +25,13 @@ alert() {
|
||||
[ -f "$js" ] && node "$js" "Status panel backup: $1" "${2:-}$(printf '\n\nLog: %s' "$LOG")" >> "$LOG" 2>&1 || true
|
||||
}
|
||||
|
||||
MODE=$(/usr/bin/python3 -c 'import json,sys; d=json.load(open(sys.argv[1])); print("standalone" if d.get("standalone") else "campus" if d.get("home") else "hub" if d.get("list") else "")' \
|
||||
MODE=$(/usr/bin/python3 -c 'import json,sys; d=json.load(open(sys.argv[1])); print("standalone" if d.get("standalone") else "location" if d.get("home") else "hub" if d.get("list") else "")' \
|
||||
"$DEST/campuses.json" 2>/dev/null)
|
||||
[ "$MODE" = hub ] || [ "$MODE" = standalone ] || { log "not the hub: nothing to back up from here"; exit 0; }
|
||||
|
||||
DRIVE=""
|
||||
if [ "$MODE" = standalone ]; then
|
||||
# A campus on its own (Apollo Beach) keeps its own copies, in this Mac's Documents (or wherever
|
||||
# A location on its own (Apollo Beach) keeps its own copies, in this Mac's Documents (or wherever
|
||||
# STATUS_PANEL_BACKUPS points, e.g. a Google Drive folder).
|
||||
DRIVE="${STATUS_PANEL_BACKUPS:-$HOME/Documents/Status Panel Backups}"
|
||||
else
|
||||
@@ -82,7 +82,7 @@ for cid, e in sorted((d.get("list") or {}).items()):
|
||||
PY
|
||||
)
|
||||
if [ -n "$FAILED" ]; then
|
||||
alert "no backup tonight for:$FAILED" "The other campuses were backed up. A campus missing here is usually off, off the network, or no longer letting this Mac log in."
|
||||
alert "no backup tonight for:$FAILED" "The other locations were backed up. A location missing here is usually off, off the network, or no longer letting this Mac log in."
|
||||
exit 1
|
||||
fi
|
||||
log "── done ──"
|
||||
|
||||
Reference in New Issue
Block a user