2020-02-26 17:23:57 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2020-07-15 20:38:19 +02:00
|
|
|
# Akarin Build Script
|
2020-02-26 17:23:57 +01:00
|
|
|
|
2020-07-15 20:38:19 +02:00
|
|
|
############################################################################
|
|
|
|
# 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"
|
2020-02-26 17:23:57 +01:00
|
|
|
|
2020-07-15 20:38:19 +02:00
|
|
|
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
|
2020-02-26 17:23:57 +01:00
|
|
|
}
|
2020-07-15 20:38:19 +02:00
|
|
|
|
2020-02-26 17:23:57 +01:00
|
|
|
failed=0
|
|
|
|
case "$1" in
|
2020-07-15 20:38:19 +02:00
|
|
|
"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
|
2020-02-26 17:23:57 +01:00
|
|
|
basedir
|
2020-07-15 20:38:19 +02:00
|
|
|
$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")
|
2020-03-22 17:20:21 +01:00
|
|
|
(
|
2020-07-15 20:38:19 +02:00
|
|
|
setupUpstreamAndPatch $2 || exit 1
|
|
|
|
basedir
|
|
|
|
$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
|
2020-03-22 17:20:21 +01:00
|
|
|
basedir
|
2020-07-15 20:38:19 +02:00
|
|
|
$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
|
2020-03-22 17:20:21 +01:00
|
|
|
)
|
|
|
|
;;
|
2020-07-15 20:38:19 +02:00
|
|
|
"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."
|
|
|
|
;;
|
2020-02-26 17:23:57 +01:00
|
|
|
esac
|
|
|
|
|
2020-07-15 20:38:19 +02:00
|
|
|
unset RCPATH
|
|
|
|
unset SOURCE
|
|
|
|
unset basedir
|
|
|
|
unset -f color
|
|
|
|
unset -f colorend
|
|
|
|
unset -f gitstash
|
|
|
|
unset -f gitunstash
|
|
|
|
if [[ "$failed" == "1" ]]; then
|
2020-02-26 17:23:57 +01:00
|
|
|
unset failed
|
|
|
|
false
|
|
|
|
else
|
|
|
|
unset failed
|
|
|
|
true
|
|
|
|
fi
|