Add .fluxbox/keys.
[dotfiles-framework.git] / bin / patch.sh
1 #!/bin/bash
2 #
3 # Patch a fresh checkout with local adjustments.
4
5 if [ -z "${DOTFILES_DIR}" ]; then
6     echo 'DOTFILES_DIR is not set.  Bailing out.'
7     exit 1
8 fi
9
10 cd "${DOTFILES_DIR}" || exit 1
11
12 # clone the checkout into DOTFILES_DIR/patched-src
13 echo "clone clean checkout into patched-src"
14 rsync -avz --delete src/ patched-src/ || exit 1
15
16 # apply all the patches in local-patch/
17 for PATCH in local-patch/*.patch; do
18     if [ -f "${PATCH}" ]; then
19         echo "apply ${PATCH}"
20         pushd patched-src/ > /dev/null || exit 1
21         patch -p0 < "../${PATCH}" || exit 1
22         popd > /dev/null || exit 1
23     fi
24 done
25
26 # remove any files marked for removal in local-patch
27 for REMOVE in local-patch/*.remove; do
28     if [ -f "${REMOVE}" ]; then
29         while read LINE; do
30             if [ -z "${LINE}" ] || [ "${LINE:0:1}" = '#' ]; then
31                 continue  # ignore blank lines and comments
32             fi
33             if [ -e "patched-src/${LINE}" ]; then
34                 echo "remove ${LINE}"
35                 rm -rf "patched-src/${LINE}"
36             fi
37         done < "${REMOVE}"
38     fi
39 done