speedwm-personal/scripts/mkpatch

102 lines
3.8 KiB
Bash
Executable file

#!/bin/sh
# mkpatch.sh
# This shell script allows you to create a patch based on changes made to options.h, options.mk, toggle.h and toggle.mk.
# Set old (current) directory
CD="$(pwd)"
CP() {
cp docs/options.def.h /tmp/options.h
cp docs/autostart.def.h /tmp/autostart.h
cp docs/options.def.mk /tmp/options.mk
cp docs/toggle.def.h /tmp/toggle.h
cp docs/toggle.def.mk /tmp/toggle.mk
cp docs/host.def.mk /tmp/host.mk
cp docs/keybinds.def.h /tmp/keybinds.h
cp docs/rules.def.h /tmp/rules.h
cp docs/actions.def.h /tmp/actions.h
cp docs/colors.def.h /tmp/colors.h
cp docs/statusbar.def.h /tmp/statusbar.h
cp docs/status.def /tmp/status
}
MKDIFF() {
cd /tmp
# Create patches
diff -up ./options.h $CD/options.h > $CD/options.h_settings.patch && echo "Created options.h patch (see options.h_settings.patch)"
diff -up ./autostart.h $CD/autostart.h > $CD/autostart.h_settings.patch && echo "Created autostart.h patch (see autostart.h_settings.patch)"
diff -up ./options.mk $CD/options.mk > $CD/options.mk_settings.patch && echo "Created options.mk patch (see options.mk_settings.patch)"
diff -up ./toggle.h $CD/toggle.h > $CD/toggle.h_settings.patch && echo "Created toggle.h patch (see toggle.h_settings.patch)"
diff -up ./keybinds.h $CD/keybinds.h > $CD/keybinds.h_settings.patch && echo "Created keybinds.h patch (see keybinds.h_settings.patch)"
diff -up ./toggle.mk $CD/toggle.mk > $CD/toggle.mk_settings.patch && echo "Created toggle.mk patch (see toggle.mk_settings.patch)"
diff -up ./host.mk $CD/host.mk > $CD/host.mk_settings.patch && echo "Created host.mk patch (see host.mk_settings.patch)"
diff -up ./rules.h $CD/rules.h > $CD/rules.h_settings.patch && echo "Created rules.h patch (see rules.h_settings.patch)"
diff -up ./actions.h $CD/actions.h > $CD/actions.h_settings.patch && echo "Created actions.h patch (see actions.h_settings.patch)"
diff -up ./colors.h $CD/colors.h > $CD/colors.h_settings.patch && echo "Created colors.h patch (see colors.h_settings.patch)"
diff -up ./statusbar.h $CD/statusbar.h > $CD/statusbar.h_settings.patch && echo "Created statusbar.h patch (see statusbar.h_settings.patch)"
diff -up ./status $CD/status > $CD/status_settings.patch && echo "Created status patch (see status_settings.patch)"
# Delete
rm -f /tmp/options.h
rm -f /tmp/options.mk
rm -f /tmp/toggle.h
rm -f /tmp/keybinds.h
rm -f /tmp/toggle.mk
rm -f /tmp/rules.h
}
# Patch the source
if [ "$1" = "-p" ]; then
ls *.patch || exit 1
patch < options.h_settings.patch
patch < autostart.h_settings.patch
patch < options.mk_settings.patch
patch < toggle.h_settings.patch
patch < toggle.mk_settings.patch
patch < host.mk_settings.patch
patch < keybinds.h_settings.patch
patch < rules.h_settings.patch
patch < actions.h_settings.patch
patch < colors.h_settings.patch
patch < statusbar.h_settings.patch
patch < status_settings.patch
cd $CD
exit 0
fi
# Remove the patch
if [ "$1" = "-r" ]; then
ls *.patch || exit 1
patch -R < options.h_settings.patch
patch -R < autostart.h_settings.patch
patch -R < options.mk_settings.patch
patch -R < toggle.h_settings.patch
patch -R < toggle.mk_settings.patch
patch -R < host.mk_settings.patch
patch -R < keybinds.h_settings.patch
patch -R < rules.h_settings.patch
patch -R < actions.h_settings.patch
patch -R < colors.h_settings.patch
patch -R < statusbar.h_settings.patch
patch -R < status_settings.patch
cd $CD
exit 0
fi
# Create patches
if [ "$1" = "-mk" ]; then
CP
MKDIFF
cd $CD
exit 0
fi
printf "mkpatch help\n\n"
printf "Usage:\n"
printf "\nmkpatch -p Apply the patch directly."
printf "\nmkpatch -r Remove the patch directly."
printf "\nmkpatch -h Display this help."
printf "\nmkpatch -mk Create patches based on changes."
printf "\nNo arguments will print help.\n"