53 lines
1.7 KiB
Bash
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"
|