From f46463e08209f7c3e3cc951871c03a7b60d59f45 Mon Sep 17 00:00:00 2001 From: budgidiere Date: Wed, 15 Jul 2020 13:38:19 -0500 Subject: [PATCH] Update yapfa --- yapfa | 301 ++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 185 insertions(+), 116 deletions(-) diff --git a/yapfa b/yapfa index 82a5b428..afa1a84b 100755 --- a/yapfa +++ b/yapfa @@ -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