infinite-agents-public/watch_and_update.sh

53 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# watch_and_update.sh - Auto-regenerate dashboard when demos change
#
# Usage:
# ./watch_and_update.sh
#
# Watches demo directories and regenerates index.html automatically
echo "🔍 Watching for changes in demo directories..."
echo "Press Ctrl+C to stop"
echo ""
# Function to regenerate
regenerate() {
echo "📝 Change detected - regenerating dashboard..."
python3 generate_index.py
echo "✅ Dashboard updated!"
echo ""
}
# Initial generation
regenerate
# Watch for changes (requires inotify-tools: sudo apt install inotify-tools)
if command -v inotifywait &> /dev/null; then
while true; do
# Watch for new HTML files or changes to existing ones
inotifywait -q -e create,modify,delete -r \
threejs_viz/ sdg_viz/ d3_test/ mapbox_test/ claude_code_devtools/ src/ src_infinite/ src_group/ 2>/dev/null || break
# Regenerate after a short delay to batch changes
sleep 1
regenerate
done
else
echo "⚠️ inotifywait not found. Install with: sudo apt install inotify-tools"
echo "Falling back to polling mode (checks every 5 seconds)..."
echo ""
# Polling fallback
last_count=$(find threejs_viz sdg_viz d3_test mapbox_test claude_code_devtools src src_infinite src_group -name "*.html" 2>/dev/null | wc -l)
while true; do
sleep 5
current_count=$(find threejs_viz sdg_viz d3_test mapbox_test claude_code_devtools src src_infinite src_group -name "*.html" 2>/dev/null | wc -l)
if [ "$current_count" != "$last_count" ]; then
regenerate
last_count=$current_count
fi
done
fi