#!/bin/sh # script/sync-hacs: Sync HACS-installed integrations to custom_components/ set -e cd "$(dirname "$0")/.." echo "==> Syncing HACS-installed integrations..." # Check if config/custom_components exists if [ ! -d "config/custom_components" ]; then echo " â„šī¸ No config/custom_components directory found" exit 0 fi # Clean up broken symlinks (where target no longer exists) cleaned=0 if [ -d "custom_components" ]; then for link in custom_components/*; do # Skip if not a symlink if [ ! -L "$link" ]; then continue fi # Check if symlink target exists if [ ! -e "$link" ]; then component=$(basename "$link") rm "$link" echo " đŸ—‘ī¸ Removed broken link: $component" cleaned=$((cleaned + 1)) fi done fi # Create symlinks for all integrations in config/custom_components/ # except those that already exist in custom_components/ synced=0 for dir in config/custom_components/*/; do component=$(basename "$dir") target="custom_components/$component" # Skip if already exists and is not a symlink (don't touch tibber_prices) if [ -e "$target" ] && [ ! -L "$target" ]; then continue fi # Create or update symlink ln -sf "${PWD}/config/custom_components/$component" "$target" echo " ✓ Linked: $component" synced=$((synced + 1)) done if [ $synced -eq 0 ] && [ $cleaned -eq 0 ]; then echo " â„šī¸ No changes needed" elif [ $synced -gt 0 ] && [ $cleaned -eq 0 ]; then echo " ✓ Synced $synced integration(s)" elif [ $synced -eq 0 ] && [ $cleaned -gt 0 ]; then echo " ✓ Cleaned up $cleaned broken link(s)" else echo " ✓ Synced $synced integration(s), cleaned up $cleaned broken link(s)" fi