#!/bin/bash # ═══════════════════════════════════════════════════════════════ # refresh_seed.sh # Pull the live Ten31 Database data off a StartOS 0.3.5 host # and stage it as the seed snapshot baked into the 0.4 image. # ═══════════════════════════════════════════════════════════════ # # Usage: # ./refresh_seed.sh [remote-data-dir] # # Examples: # ./refresh_seed.sh start9@192.168.1.50 # ./refresh_seed.sh embassy@embassy.local \ # /embassy-data/package-data/volumes/ten-database/data/main # # What it does: # 1. Finds the remote /data directory for the ten-database service. # 2. Copies crm.db, backups/, and (optionally) .crm-secret into # start9/0.4/seed/data/ on this machine. # 3. Prints a row-count summary so you can verify content. # # After it finishes, run: # make clean && make x86 # from this (start9/0.4/) directory to rebuild the .s9pk. # ═══════════════════════════════════════════════════════════════ set -eu if [ $# -lt 1 ]; then echo "Usage: $0 [remote-data-dir]" echo "" echo "Remote data dir defaults (tried in order):" echo " /embassy-data/package-data/volumes/ten-database/data/main" echo " /mnt/embassy-os/package-data/volumes/ten-database/data/main" echo " /var/lib/embassy/services/ten-database/data" exit 1 fi REMOTE="$1" REMOTE_DIR="${2:-}" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SEED_DIR="$SCRIPT_DIR/seed/data" echo "" echo " Staging production seed from $REMOTE" echo " into $SEED_DIR" echo "" # Auto-detect remote data dir if not supplied if [ -z "$REMOTE_DIR" ]; then echo " Probing for remote data directory..." for candidate in \ "/embassy-data/package-data/volumes/ten-database/data/main" \ "/mnt/embassy-os/package-data/volumes/ten-database/data/main" \ "/var/lib/embassy/services/ten-database/data"; do if ssh "$REMOTE" "[ -f \"$candidate/crm.db\" ]" 2>/dev/null; then REMOTE_DIR="$candidate" echo " found: $REMOTE_DIR" break fi done if [ -z "$REMOTE_DIR" ]; then echo " Could not auto-detect a valid data directory with crm.db on $REMOTE." echo " Re-run this script and pass the path explicitly as the 2nd argument." exit 2 fi fi mkdir -p "$SEED_DIR/backups" echo "" echo " Copying crm.db ..." scp "$REMOTE:$REMOTE_DIR/crm.db" "$SEED_DIR/crm.db" echo " Copying backups/ (if present) ..." if ssh "$REMOTE" "[ -d \"$REMOTE_DIR/backups\" ]" 2>/dev/null; then scp -r "$REMOTE:$REMOTE_DIR/backups/." "$SEED_DIR/backups/" || true else echo " (none found, skipping)" fi echo " Copying .crm-secret (optional — keeps existing JWTs valid) ..." if ssh "$REMOTE" "[ -f \"$REMOTE_DIR/.crm-secret\" ]" 2>/dev/null; then read -r -p " Include .crm-secret in the baked image? [y/N] " ans case "$ans" in [yY]*) scp "$REMOTE:$REMOTE_DIR/.crm-secret" "$SEED_DIR/.crm-secret" ;; *) echo " skipping .crm-secret; a fresh secret will be generated on first boot" ;; esac else echo " (no .crm-secret on remote)" fi echo "" echo " Summary of staged seed:" ls -la "$SEED_DIR" echo "" if command -v python3 >/dev/null 2>&1 && [ -f "$SEED_DIR/crm.db" ]; then python3 - <