Commit
This commit is contained in:
127
sync_from_containers.sh
Executable file
127
sync_from_containers.sh
Executable file
@@ -0,0 +1,127 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Sync Files FROM Containers TO Local Filesystem
|
||||
# Recovers the latest versions from running containers
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
echo "🔄 Syncing files FROM containers TO local filesystem"
|
||||
echo "====================================================="
|
||||
echo ""
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Function to sync a single file
|
||||
sync_file() {
|
||||
local container=$1
|
||||
local container_path=$2
|
||||
local local_path=$3
|
||||
|
||||
if docker exec "$container" test -f "$container_path" 2>/dev/null; then
|
||||
echo -e "${GREEN}📥 Copying: $local_path${NC}"
|
||||
docker cp "$container:$container_path" "$local_path"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ Skipping (not in container): $local_path${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to sync directory
|
||||
sync_directory() {
|
||||
local container=$1
|
||||
local container_dir=$2
|
||||
local local_dir=$3
|
||||
|
||||
echo ""
|
||||
echo "Syncing directory: $local_dir"
|
||||
echo "---"
|
||||
|
||||
# Create local directory if it doesn't exist
|
||||
mkdir -p "$local_dir"
|
||||
|
||||
# Copy entire directory
|
||||
if docker exec "$container" test -d "$container_dir" 2>/dev/null; then
|
||||
echo -e "${GREEN}📥 Copying directory: $container_dir -> $local_dir${NC}"
|
||||
docker cp "$container:$container_dir/." "$local_dir/"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ Directory not in container: $container_dir${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
echo "📦 Syncing from echoes_of_the_ashes_map..."
|
||||
echo "==========================================="
|
||||
|
||||
sync_file "echoes_of_the_ashes_map" "/app/web-map/server.py" "web-map/server.py"
|
||||
sync_file "echoes_of_the_ashes_map" "/app/web-map/editor_enhanced.js" "web-map/editor_enhanced.js"
|
||||
sync_file "echoes_of_the_ashes_map" "/app/web-map/editor.html" "web-map/editor.html"
|
||||
sync_file "echoes_of_the_ashes_map" "/app/web-map/index.html" "web-map/index.html"
|
||||
sync_file "echoes_of_the_ashes_map" "/app/web-map/map.js" "web-map/map.js"
|
||||
sync_file "echoes_of_the_ashes_map" "/app/web-map/README.md" "web-map/README.md"
|
||||
|
||||
echo ""
|
||||
echo "📦 Syncing from echoes_of_the_ashes_api..."
|
||||
echo "==========================================="
|
||||
|
||||
sync_file "echoes_of_the_ashes_api" "/app/api/main.py" "api/main.py"
|
||||
sync_file "echoes_of_the_ashes_api" "/app/api/database.py" "api/database.py"
|
||||
sync_file "echoes_of_the_ashes_api" "/app/api/game_logic.py" "api/game_logic.py"
|
||||
sync_file "echoes_of_the_ashes_api" "/app/api/background_tasks.py" "api/background_tasks.py"
|
||||
|
||||
# Sync routers directory
|
||||
if docker exec echoes_of_the_ashes_api test -d "/app/api/routers" 2>/dev/null; then
|
||||
sync_directory "echoes_of_the_ashes_api" "/app/api/routers" "api/routers"
|
||||
fi
|
||||
|
||||
# Sync services directory
|
||||
if docker exec echoes_of_the_ashes_api test -d "/app/api/services" 2>/dev/null; then
|
||||
sync_directory "echoes_of_the_ashes_api" "/app/api/services" "api/services"
|
||||
fi
|
||||
|
||||
# Sync core directory
|
||||
if docker exec echoes_of_the_ashes_api test -d "/app/api/core" 2>/dev/null; then
|
||||
sync_directory "echoes_of_the_ashes_api" "/app/api/core" "api/core"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "📦 Syncing from echoes_of_the_ashes_pwa..."
|
||||
echo "==========================================="
|
||||
|
||||
sync_file "echoes_of_the_ashes_pwa" "/app/src/App.tsx" "pwa/src/App.tsx"
|
||||
sync_file "echoes_of_the_ashes_pwa" "/app/src/App.css" "pwa/src/App.css"
|
||||
sync_file "echoes_of_the_ashes_pwa" "/app/src/main.tsx" "pwa/src/main.tsx"
|
||||
sync_file "echoes_of_the_ashes_pwa" "/app/src/index.css" "pwa/src/index.css"
|
||||
|
||||
# Sync components
|
||||
if docker exec echoes_of_the_ashes_pwa test -d "/app/src/components" 2>/dev/null; then
|
||||
sync_directory "echoes_of_the_ashes_pwa" "/app/src/components" "pwa/src/components"
|
||||
fi
|
||||
|
||||
# Sync contexts
|
||||
if docker exec echoes_of_the_ashes_pwa test -d "/app/src/contexts" 2>/dev/null; then
|
||||
sync_directory "echoes_of_the_ashes_pwa" "/app/src/contexts" "pwa/src/contexts"
|
||||
fi
|
||||
|
||||
# Sync services
|
||||
if docker exec echoes_of_the_ashes_pwa test -d "/app/src/services" 2>/dev/null; then
|
||||
sync_directory "echoes_of_the_ashes_pwa" "/app/src/services" "pwa/src/services"
|
||||
fi
|
||||
|
||||
# Sync hooks
|
||||
if docker exec echoes_of_the_ashes_pwa test -d "/app/src/hooks" 2>/dev/null; then
|
||||
sync_directory "echoes_of_the_ashes_pwa" "/app/src/hooks" "pwa/src/hooks"
|
||||
fi
|
||||
|
||||
# Sync utils
|
||||
if docker exec echoes_of_the_ashes_pwa test -d "/app/src/utils" 2>/dev/null; then
|
||||
sync_directory "echoes_of_the_ashes_pwa" "/app/src/utils" "pwa/src/utils"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✅ Sync complete!${NC}"
|
||||
echo ""
|
||||
echo "Run './check_container_sync.sh' to verify all files are now in sync."
|
||||
Reference in New Issue
Block a user