Files
Purpur/scripts/rebuildpatches.sh
BillyGalbreath ef0b93df2e Rebuild patches
2020-12-12 18:19:48 -06:00

41 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env 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
. "$(dirname "$SOURCE")/init.sh"
PS1="$"
echo "Rebuilding patch files from current fork state..."
function savePatches() {
what=$1
cd "$basedir"/"$what"/ || exit
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")
declare -a files=("$basedir/patches/$2/"*.patch)
for i in $(seq -f "%04g" 1 1 "$last"); do
if [ "$i" -lt "$next" ]; then
rm "${files[$(("$i" - 1))]}"
fi
done
else
rm "$basedir"/patches/"$2"/*.patch
fi
git format-patch --no-signature --no-stat --full-index -N -o "$basedir/patches/$2" upstream/upstream
cd "$basedir" || exit
git add -A "$basedir"/patches/"$2"
echo " Patches saved for $what to patches/$2"
}
savePatches Purpur-API api
savePatches Purpur-Server server