Files
BoosAPI/comfy_patches/apply.sh
T
2026-05-21 16:32:04 +02:00

50 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Apply BoosAPI overlay patches on top of the vanilla ComfyUI submodule.
#
# Run after `git submodule update --init` or after bumping the submodule
# pointer. Idempotent — files are overwritten with the overlay copy.
#
# Refuses to clobber a dirty submodule working tree so you don't lose
# upstream work-in-progress.
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
OVERLAY="$ROOT/comfy_patches/overlay"
TARGET="$ROOT/comfy_source"
if [ ! -d "$TARGET" ]; then
echo "comfy_source/ does not exist — did you forget --recurse-submodules?" >&2
exit 1
fi
# Refuse to apply over a dirty submodule (anything other than our overlay diff).
# The overlay files _will_ show as modified after we apply, so we only check
# for OTHER changes by comparing against the upstream tree.
if [ -d "$TARGET/.git" ] || [ -f "$TARGET/.git" ]; then
cd "$TARGET"
# Stash any pre-existing local changes that aren't part of the overlay.
# We list overlay paths and exclude them from the dirty check.
overlay_paths=$(cd "$OVERLAY" && find . -type f -printf '%P\n')
unexpected=$(git status --porcelain | awk '{print $2}' | grep -vxF -f <(printf '%s\n' "$overlay_paths") || true)
if [ -n "$unexpected" ]; then
echo "comfy_source/ has unexpected local changes — aborting:" >&2
echo "$unexpected" >&2
echo "" >&2
echo "Commit/stash inside the submodule, or rm -rf and re-init it." >&2
exit 1
fi
cd "$ROOT"
fi
count=0
while IFS= read -r -d '' src; do
rel="${src#"$OVERLAY/"}"
dst="$TARGET/$rel"
mkdir -p "$(dirname "$dst")"
cp "$src" "$dst"
count=$((count + 1))
done < <(find "$OVERLAY" -type f -print0)
echo "Applied $count overlay file(s) to comfy_source/."