← back to Sound Agentabrams
SoundLab: sync.sh + sources.tsv scaffold for source-build sync
bfb052f162bc50c2885a97f66654c7e227256f09 · 2026-07-25 00:07:00 -0700 · Steve
Files touched
Diff
commit bfb052f162bc50c2885a97f66654c7e227256f09
Author: Steve <steve@designerwallcoverings.com>
Date: Sat Jul 25 00:07:00 2026 -0700
SoundLab: sync.sh + sources.tsv scaffold for source-build sync
---
sources.tsv | 1 +
sync.sh | 26 ++++++++++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/sources.tsv b/sources.tsv
new file mode 100644
index 0000000..39bd1ce
--- /dev/null
+++ b/sources.tsv
@@ -0,0 +1 @@
+# <hub-id> <abs-source-project-path>
diff --git a/sync.sh b/sync.sh
new file mode 100755
index 0000000..5b65f34
--- /dev/null
+++ b/sync.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+# Reconcile standalone source builds -> this topic hub (sounds/<id>/).
+# Mapping lives in sources.tsv: "<hub-id>\t<abs-source-project-path>".
+# Usage: ./sync.sh [--commit]
+set -euo pipefail
+HUB="$(cd "$(dirname "$0")" && pwd)"
+MAP="$HUB/sources.tsv"
+[ -f "$MAP" ] || { echo "no sources.tsv"; exit 0; }
+changed=0
+while IFS=$'\t' read -r id src; do
+ [ -z "${id:-}" ] && continue
+ case "$id" in \#*) continue;; esac
+ src="${src/#\~/$HOME}"
+ dest="$HUB/sounds/$id"
+ if [ ! -d "$src" ]; then echo "! source missing for $id: $src"; continue; fi
+ mkdir -p "$dest"
+ if ! cmp -s "$src/index.html" "$dest/index.html" 2>/dev/null; then
+ cp "$src/index.html" "$dest/index.html"; echo "synced index.html -> sounds/$id/"; changed=1
+ fi
+ for aa in "$src"/*.aa; do [ -e "$aa" ] || continue; cp "$aa" "$dest/"; done
+done < "$MAP"
+[ "$changed" = 1 ] && echo "sync: updates applied" || echo "sync: all in sync"
+if [ "${1:-}" = "--commit" ] && [ -n "$(git -C "$HUB" status --porcelain)" ]; then
+ git -C "$HUB" add -A
+ git -C "$HUB" -c user.email="steve@designerwallcoverings.com" -c user.name="Steve" commit -q -m "sync builds from source" && echo "committed hub"
+fi
← 6ad8b9f SoundLab: add first build — Outrun (Synthwave Visualizer)
·
back to Sound Agentabrams
·
5x sweep 1: sync visualizer favicon fix into SoundLab hub 5a84c7e →