mSpigot-Parent/scripts/rebuildpatches.sh

53 lines
1.7 KiB
Bash

#!/bin/bash
# get base dir regardless of execution location
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
initScript=$(dirname "$SOURCE")/init.sh
. "$initScript"
PS1="$"
log_info "Rebuilding patches from current state..."
function savePatches {
what=$1
cd "$basedir/$what/"
mkdir -p "$basedir/patches/$2"
if [ -d ".git/rebase-apply" ]; then
# in middle of a rebase, be smarter
echo "REBASE DETECTED - PARTIAL SAVE"
last=$(cat ".git/rebase-apply/last")
next=$(cat ".git/rebase-apply/next")
for i in $(seq -f "%04g" 1 1 $last)
do
if [ $i -lt $next ]; then
for patchFile in "$basedir/patches/$2/${i}-"*.patch
do
rm "$patchFile"
done
#rm $basedir/patches/$2/${i}-*.patch
fi
done
else
#rm $(sed 's/ /\\ /g' <<< $basedir)/patches/$2/*.patch
for patchFile in "$basedir/patches/$2/"*.patch
do
rm "$patchFile"
done
fi
git format-patch --quiet --no-stat -N -o "$basedir/patches/$2" upstream/upstream
cd "$basedir"
git add -A "$basedir/patches/$2"
cleanupPatches "$basedir/patches/$2/"
echo " Patches saved for $what to patches/$2"
}
savePatches mSpigot-API api
savePatches mSpigot-Server server
log_info "Patches successfully rebuilt"