57 lines
2.1 KiB
Bash
57 lines
2.1 KiB
Bash
#!/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
|
|
SOURCE=$([[ "$SOURCE" = /* ]] && echo "$SOURCE" || echo "$PWD/${SOURCE#./}")
|
|
basedir=$(dirname "$SOURCE")
|
|
|
|
PS1="$"
|
|
applycmd="git am --3way --ignore-whitespace"
|
|
# Windows detection to workaround ARG_MAX limitation
|
|
windows="$([[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" ]] && echo "true" || echo "false")"
|
|
echo "Rebuilding Forked projects.... "
|
|
|
|
function applyPatch {
|
|
what="$1"
|
|
target="$2"
|
|
branch="$3"
|
|
cd "$basedir/$what"
|
|
git fetch
|
|
git branch -f upstream "$branch" >/dev/null
|
|
|
|
cd "$basedir"
|
|
if [ ! -d "$basedir/$target" ]; then
|
|
git clone "$what" "$target"
|
|
fi
|
|
cd "$basedir/$target"
|
|
echo "Resetting $target to $what..."
|
|
git remote add -f upstream ../$what >/dev/null 2>&1
|
|
git checkout master >/dev/null 2>&1
|
|
git fetch upstream >/dev/null 2>&1
|
|
git reset --hard upstream/upstream
|
|
echo " Applying patches to $target..."
|
|
git am --abort >/dev/null 2>&1
|
|
# Special case Windows handling because of ARG_MAX constraint
|
|
if [[ $windows == "true" ]]; then
|
|
echo " Using workaround for Windows ARG_MAX constraint"
|
|
find "$basedir/${what}-Patches/"*.patch -print0 | xargs -0 $applycmd
|
|
else
|
|
$applycmd "$basedir/${what}-Patches/"*.patch
|
|
fi
|
|
if [ "$?" != "0" ]; then
|
|
echo " Something did not apply cleanly to $target."
|
|
echo " Please review above details and finish the apply then"
|
|
echo " save the changes with rebuildPatches.sh"
|
|
exit 1
|
|
else
|
|
echo " Patches applied cleanly to $target"
|
|
fi
|
|
}
|
|
|
|
applyPatch Bukkit Spigot-API HEAD && applyPatch CraftBukkit Spigot-Server patched
|
|
applyPatch Spigot-API PaperSpigot-API HEAD && applyPatch Spigot-Server PaperSpigot-Server HEAD |