Files
uw-imap-2007f/scripts/apply-patches.sh
2025-12-14 16:04:04 +01:00

47 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PATCHDIR="${ROOT}/patches"
usage() {
cat <<USAGE
Usage: $0
Applies patches/*.patch to the working tree (idempotent).
USAGE
}
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
usage
exit 0
fi
cd "$ROOT"
if [[ ! -d "$PATCHDIR" ]]; then
echo "ERROR: patches/ directory not found at: $PATCHDIR" >&2
exit 1
fi
# Apply patches only if they are not already applied.
# We use --dry-run to test applicability; if it fails, we assume it's already applied.
shopt -s nullglob
patches=( "$PATCHDIR"/000[1-4]-*.patch )
#patches=( "$PATCHDIR"/*.patch )
if (( ${#patches[@]} == 0 )); then
echo "ERROR: no patches found in $PATCHDIR" >&2
exit 1
fi
for p in "${patches[@]}"; do
echo "==> Checking $p"
if patch --dry-run -p1 < "$p" >/dev/null 2>&1; then
echo "==> Applying $(basename "$p")"
patch -p1 < "$p"
else
echo "==> Skipping $(basename "$p") (already applied or does not apply cleanly)"
fi
done
echo "Done."