Update yapfa

This commit is contained in:
budgidiere 2020-07-15 13:38:19 -05:00 committed by GitHub
parent f72fe7e136
commit f46463e082
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

301
yapfa
View File

@ -1,132 +1,201 @@
#!/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")
. "$basedir"/scripts/init.sh
# Akarin Build Script
paperstash() {
STASHED=$(git stash)
############################################################################
# Multicore building #
# By JosephWorks #
# -------------------------------------------------------------------------#
# To use multicore building, use "$mvncmd" instead of "maven" #
# 20-50% speed improvement is quite common. #
############################################################################
# Exit immediately if a command exits with a non-zero status
set -e
source "./scripts/functions.sh"
function setupUpstreamAndPatch {
basedir
if [ "$1" == "--updatePaper" ]; then
$scriptdir/updateUpstream.sh "$basedir" 1 || exit 1
else
if [ "$1" != "--skipPaper" ]; then
$scriptdir/updateUpstream.sh "$basedir" 0 || exit 1 # not update submodule
fi
fi
$scriptdir/applyPatches.sh "$basedir" || exit 1
}
paperunstash() {
if [[ "$STASHED" != "No local changes to save" ]] ; then
git stash pop
fi
}
failed=0
case "$1" in
"rb" | "rbp" | "rebuild")
(
set -e
cd "$basedir"
scripts/rebuildpatches.sh "$basedir" || exit 1
) || failed=1
;;
"p" | "patch" | "apply")
(
set -e
cd "$basedir"
scripts/apply.sh "$basedir" || exit 1
) || failed=1
;;
"b" | "bu" | "build")
(
basedir
mvn -N install
cd ${FORK_NAME}-API
mvn clean install && cd ../${FORK_NAME}-Server && mvn clean install
) || failed=1
;;
"jar" | "paperclip")
"r" | "rb" | "rbp" | "rebuild")
(
set -e
basedir
$scriptdir/importSources.sh "$basedir" || exit 1
$scriptdir/rebuildPatches.sh "$basedir" || exit 1
) || failed=1
;;
"a" | "p" | "patch" | "apply")
(
set -e
setupUpstreamAndPatch $2 || exit 1
) || failed=1
;;
"b" | "bu" | "build" | "install")
(
set -e
setupUpstreamAndPatch $2 || exit 1
basedir
$mvncmd -N install || exit 1
cd ${FORK_NAME}-API
$mvncmd -e clean install && (cd ../Tuinity/Paper/Paper-MojangAPI && $mvncmd -e clean install) && cd ../${FORK_NAME}-Server && $mvncmd -e clean install || exit 1
) || failed=1
;;
"j" | "launcher" | "jar" | "paperclip")
(
setupUpstreamAndPatch $2 || exit 1
basedir
cd "$basedir"
./scripts/paperclip.sh
$mvncmd -N install surefire-report:report
cd ${FORK_NAME}-API
$mvncmd -e clean install && (cd ../Tuinity/Paper/Paper-MojangAPI && $mvncmd -e clean install) && cd ../${FORK_NAME}-Server && $mvncmd -e clean install surefire-report:report
basedir
$scriptdir/installLauncher.sh "$basedir"
) || failed=1
;;
"d" | "de" | "deploy")
(
basedir
$mvncmd -N install
cd ${FORK_NAME}-API
$mvncmd clean deploy && (cd ../Tuinity/Paper/Paper-MojangAPI && $mvncmd -e clean install) && cd ../${FORK_NAME}-Server && $mvncmd clean install
)
;;
"d" | "de" | "deploy")
(
basedir
mvn -N install
cd ${FORK_NAME}-API
mvn clean deploy && cd ../${FORK_NAME}-Server && mvn clean install
) || failed=1
;;
"up" | "upstream")
(
cd "$basedir"
scripts/upstream.sh "$2" || exit 1
if [ "$2" == "up" ]; then
(scripts/apply.sh "$basedir" && scripts/rebuildpatches.sh "$basedir" && scripts/commitup.sh) || exit 1
fi
) || failed=1
;;
"cup" | "commitup" | "upc" | "upcommit")
(
cd "$basedir"
scripts/commitup.sh || exit 1
) || failed=1
;;
"r" | "root")
cd "$basedir"
;;
"a" | "api")
cd "$basedir/YAPFA-API"
;;
"s" | "server")
cd "$basedir/YAPFA-Server"
;;
"setup")
if [[ -f ~/.bashrc ]] ; then
NAME="ec"
if [[ ! -z "${2+x}" ]] ; then
NAME="$2"
fi
(grep "alias $NAME=" ~/.bashrc > /dev/null) && (sed -i "s|alias $NAME=.*|alias $NAME='. $SOURCE'|g" ~/.bashrc) || (echo "alias $NAME='. $SOURCE'" >> ~/.bashrc)
alias "$NAME=. $SOURCE"
echo "You can now just type '$NAME' at any time to access the paper tool."
fi
;;
*)
echo "YAPFA build tool command. This provides a variety of commands to build and manage the PaperMC build"
echo "environment. For all of the functionality of this command to be available, you must first run the"
echo "'setup' command. View below for details. For essential building and patching, you do not need to do the setup."
echo ""
echo " Normal commands:"
echo " * rb, rebuild | Rebuild patches, can be called from anywhere."
echo " * p, patch | Apply all patches to top of Paper without building it. Can be run from anywhere."
echo " * up, upstream | Build Paper upstream, pass arg up to update paper. Can be run from anywhere."
echo " * b, build | Build API and Server but no deploy. Can be ran anywhere."
echo " * d, deploy | Build and Deploy API jar and build Server. Can be ran anywhere."
echo ""
echo " These commands require the setup command before use:"
echo " * r, root | Change directory to the root of the project."
echo " * a. api | Move to the Paper-API directory."
echo " * s, server | Move to the Paper-Server directory."
echo " * e, edit | Use to edit a specific patch, give it the argument \"server\" or \"api\""
echo " | respectively to edit the correct project. Use the argument \"continue\" after"
echo " | the changes have been made to finish and rebuild patches. Can be called from anywhere."
echo ""
echo " * setup | Add an alias to .bashrc to allow full functionality of this script. Run as:"
echo " | . ./paper setup"
echo " | After you run this command you'll be able to just run 'paper' from anywhere."
echo " | The default name for the resulting alias is 'paper', you can give an argument to override"
echo " | this default, such as:"
echo " | . ./paper setup example"
echo " | Which will allow you to run 'example' instead."
;;
"u" | "up" | "upstream" | "update")
(
basedir
$scriptdir/updateUpstream.sh "$basedir" 1
)
;;
"r" | "root")
basedir
;;
"a" | "api")
cd "$basedir/Akarin-API"
;;
"s" | "server")
cd "$basedir/Akarin-Server"
;;
"c" | "clean")
rm -rf Akarin-API
rm -rf Akarin-Server
rm -rf Paper
echo "Cleaned build files"
;;
"e" | "edit")
case "$2" in
"s" | "server")
export AKARIN_LAST_EDIT="$basedir/Akarin-Server"
cd "$basedir/Akarin-Server"
(
set -e
gitstash
cd "$basedir/Paper/Paper-Server"
$gitcmd fetch --all
# Create the upstream branch in Paper project with current state
$gitcmd checkout master # possibly already in
$gitcmd branch -D upstream || true
$gitcmd branch -f upstream HEAD
cd "$basedir/Akarin-Server"
$gitcmd rebase -i upstream/upstream
gitunstash
)
;;
"a" | "api")
export AKARIN_LAST_EDIT="$basedir/Akarin-API"
cd "$basedir/Akarin-API"
(
set -e
gitstash
cd "$basedir/Paper/Paper-API"
$gitcmd fetch --all
# Create the upstream branch in Paper project with current state
$gitcmd checkout master # possibly already in
$gitcmd branch -D upstream || true
$gitcmd branch -f upstream HEAD
cd "$basedir/Akarin-API"
$gitcmd rebase -i upstream/upstream
gitunstash
)
;;
"c" | "continue")
cd "$AKARIN_LAST_EDIT"
unset AKARIN_LAST_EDIT
(
set -e
$gitcmd add .
$gitcmd commit --amend
$gitcmd rebase --continue
basedir
$scriptdir/rebuildPatches.sh "$basedir"
)
;;
*)
echo "You must edit either the api or server."
;;
esac
;;
"setup")
if [[ -f ~/.bashrc ]] ; then
NAME="akarin"
if [[ ! -z "${2+x}" ]] ; then
NAME="$2"
fi
(grep "alias $NAME=" ~/.bashrc > /dev/null) && (sed -i "s|alias $NAME=.*|alias $NAME='. $SOURCE'|g" ~/.bashrc) || (echo "alias $NAME='. $SOURCE'" >> ~/.bashrc)
alias "$NAME=. $SOURCE"
echo "You can now just type '$NAME' at any time to access the akarin tool."
fi
;;
*)
echo "Akarin build tool command. This provides a variety of commands to build and manage the Akarin build"
echo "environment. For all of the functionality of this command to be available, you must first run the"
echo "'setup' command. View below for details. For essential building and patching, you do not need to do the setup."
echo ""
echo " Normal commands:"
echo " * r, rebuild | Rebuild patches, can be called from anywhere."
echo " * p, patch | Apply all patches to top of Paper without building it. Can be run from anywhere."
echo " * u, update | Update and patch the Paper submodule. Can be run from anywhere."
echo " * b, build | Build the projects, including the API and the Server. Can be ran anywhere."
echo " * j, jar | Build the projects and build the launcher jar. Can be ran anywhere."
echo " * d, deploy | Build the projects and deploy through Maven. Can be ran anywhere."
echo ""
echo " These commands require the setup command before use:"
echo " * r, root | Change directory to the root of the project."
echo " * a. api | Move to the Akarin-API directory."
echo " * s, server | Move to the Akarin-Server directory."
echo " * e, edit | Use to edit a specific patch, give it the argument \"server\" or \"api\""
echo " | respectively to edit the correct project. Use the argument \"continue\" after"
echo " | the changes have been made to finish and rebuild patches. Can be called from anywhere."
echo ""
echo " * setup | Add an alias to .bashrc to allow full functionality of this script. Run as:"
echo " | . ./akarin setup"
echo " | After you run this command you'll be able to just run 'akarin' from anywhere."
echo " | The default name for the resulting alias is 'akarin', you can give an argument to override"
echo " | this default, such as:"
echo " | . ./akarin setup example"
echo " | Which will allow you to run 'example' instead."
;;
esac
unset -f paperstash
unset -f paperunstash
if [ "$failed" == "1" ]; then
unset RCPATH
unset SOURCE
unset basedir
unset -f color
unset -f colorend
unset -f gitstash
unset -f gitunstash
if [[ "$failed" == "1" ]]; then
unset failed
false
else