BMAD-METHOD/bmad/core/preservation/backup-agents.sh

69 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# BMAD Agent Backup Automation Script
# Usage: ./backup-agents.sh [quick|full]
set -e
BMAD_ROOT="/Users/hbl/Documents/BMAD-METHOD"
BACKUP_ROOT="/Users/hbl/Documents/BMAD-AGENT-BACKUPS"
ICLOUD_DIR="$HOME/Library/Mobile Documents/com~apple~CloudDocs/BMAD-Agents"
BACKUP_DATE=$(date +%Y-%m-%d_%H-%M-%S)
echo "🔧 BMAD Agent Backup System"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Tier 1: Git Commit
echo "📦 Tier 1: Creating git commit..."
cd "$BMAD_ROOT"
git add bmad/*/agents/ bmad/_cfg/agent-manifest.csv bmad/core/preservation/
if git diff --cached --quiet; then
echo "✓ No changes to commit"
else
git commit -m "Agent backup: $BACKUP_DATE"
echo "✅ Git commit created"
fi
# Tier 2: Local Archive
if [ "$1" == "full" ]; then
echo "📦 Tier 2: Creating local archive..."
mkdir -p "$BACKUP_ROOT/$BACKUP_DATE"
cp -r "$BMAD_ROOT/bmad/core/agents" "$BACKUP_ROOT/$BACKUP_DATE/core-agents"
cp -r "$BMAD_ROOT/bmad/bmm/agents" "$BACKUP_ROOT/$BACKUP_DATE/bmm-agents"
cp -r "$BMAD_ROOT/bmad/cis/agents" "$BACKUP_ROOT/$BACKUP_DATE/cis-agents"
cp "$BMAD_ROOT/bmad/_cfg/agent-manifest.csv" "$BACKUP_ROOT/$BACKUP_DATE/"
cd "$BACKUP_ROOT"
tar -czf "bmad-agents-$BACKUP_DATE.tar.gz" "$BACKUP_DATE"
rm -rf "$BACKUP_DATE"
echo "✅ Archive created: bmad-agents-$BACKUP_DATE.tar.gz"
# Keep only last 30 backups
ls -t bmad-agents-*.tar.gz 2>/dev/null | tail -n +31 | xargs rm -f 2>/dev/null || true
echo "✓ Cleanup: Kept last 30 backups"
fi
# Tier 3: iCloud Sync
echo "📦 Tier 3: Syncing to iCloud..."
mkdir -p "$ICLOUD_DIR"
rsync -av --delete \
"$BMAD_ROOT/bmad/" \
"$ICLOUD_DIR/" \
--exclude=".DS_Store" \
--exclude="node_modules" 2>&1 | grep -v "^sending\|^sent\|^total"
echo "✅ Synced to iCloud"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ Backup Complete!"
echo ""
echo "📊 Backup Locations:"
echo " - Git: $BMAD_ROOT/.git"
if [ "$1" == "full" ]; then
echo " - Archive: $BACKUP_ROOT/bmad-agents-$BACKUP_DATE.tar.gz"
fi
echo " - iCloud: $ICLOUD_DIR"
echo ""
echo "📋 Agent Count: $(wc -l < "$BMAD_ROOT/bmad/_cfg/agent-manifest.csv") agents backed up"