[object Object]

← 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 →