176 lines
6.1 KiB
Bash
Executable File
176 lines
6.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# exit immediately if a command exits with a non-zero status
|
|
set -e
|
|
# 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
|
|
|
|
paperstash() {
|
|
STASHED=$(git stash)
|
|
}
|
|
|
|
paperunstash() {
|
|
if [[ "$STASHED" != "No local changes to save" ]] ; then
|
|
git stash pop
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
"rb" | "rbp" | "rebuild")
|
|
(
|
|
set -e
|
|
cd "$basedir"
|
|
scripts/rebuildpatches.sh "$basedir"
|
|
)
|
|
;;
|
|
"p" | "patch" | "apply")
|
|
(
|
|
set -e
|
|
cd "$basedir"
|
|
if [ "$2" != "fast" ]; then
|
|
scripts/upstream.sh
|
|
fi
|
|
scripts/apply.sh "$basedir"
|
|
)
|
|
;;
|
|
"b" | "bu" | "build")
|
|
(
|
|
basedir
|
|
mvn -N install
|
|
cd ${FORK_NAME}-API && mvn -e clean install
|
|
cd ../Paper/Paper-MojangAPI && mvn -e clean install
|
|
cd ../../${FORK_NAME}-Server && mvn -e clean install
|
|
)
|
|
;;
|
|
"jar" | "paperclip")
|
|
(
|
|
basedir
|
|
cd "$basedir"
|
|
if [ "$2" != "fast" ]; then
|
|
scripts/upstream.sh
|
|
fi
|
|
./scripts/apply.sh "$basedir"
|
|
cd "$basedir"
|
|
mvn -N install
|
|
cd ${FORK_NAME}-Common && mvn -e clean install
|
|
cd ../${FORK_NAME}-API && mvn -e clean install
|
|
cd ../Paper/Paper-MojangAPI && mvn -e clean install
|
|
cd ../../${FORK_NAME}-Server && mvn -e clean install
|
|
cd "$basedir"
|
|
./scripts/paperclip.sh
|
|
)
|
|
;;
|
|
"i" | "install")
|
|
(
|
|
basedir
|
|
mvn -N install
|
|
cd ${FORK_NAME}-Common
|
|
mvn clean install
|
|
cd ../${FORK_NAME}-API
|
|
mvn clean install
|
|
cd ../Paper/Paper-MojangAPI
|
|
mvn clean install
|
|
cd ../../${FORK_NAME}-Server
|
|
mvn clean install
|
|
)
|
|
;;
|
|
"ghjar")
|
|
(
|
|
# github install because workflows are dumb
|
|
basedir
|
|
cd "$basedir"
|
|
if [ "$2" != "fast" ]; then
|
|
scripts/upstream.sh
|
|
fi
|
|
./scripts/apply.sh "$basedir"
|
|
cd "$basedir"
|
|
mvn -N install
|
|
cd ${FORK_NAME}-Common && mvn -e clean install -Dmaven.javadoc.skip=true
|
|
cd ../${FORK_NAME}-API && mvn -e clean install -Dmaven.javadoc.skip=true
|
|
cd ../Paper/Paper-MojangAPI && mvn -e clean install
|
|
cd ../../${FORK_NAME}-Server && mvn -e clean install
|
|
cd "$basedir"
|
|
./scripts/paperclip.sh
|
|
)
|
|
;;
|
|
"d" | "deploy")
|
|
(
|
|
basedir
|
|
mvn -N deploy
|
|
cd ${FORK_NAME}-Common
|
|
mvn clean deploy
|
|
cd ../${FORK_NAME}-API
|
|
mvn clean deploy
|
|
cd ../${FORK_NAME}-Server
|
|
mvn clean deploy
|
|
)
|
|
;;
|
|
"up" | "upstream")
|
|
(
|
|
cd "$basedir"
|
|
scripts/upstream.sh "$2"
|
|
)
|
|
;;
|
|
"r" | "root")
|
|
cd "$basedir"
|
|
;;
|
|
"a" | "api")
|
|
cd "$basedir/Parchment-API"
|
|
;;
|
|
"s" | "server")
|
|
cd "$basedir/Parchment-Server"
|
|
;;
|
|
"setup")
|
|
if [[ -f ~/.bashrc ]] ; then
|
|
NAME="parchment"
|
|
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 "Parchment 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 " * j, jar | Apply all patches and build the project, parchment-paperclip.jar will be output. Can be run from anywhere."
|
|
echo " * i, install | Build and install API jar and build Server. Can be ran anywhere."
|
|
echo " * d, deploy | Deploy the API, Server, and Common."
|
|
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 " | . ./parchment setup"
|
|
echo " | After you run this command you'll be able to just run 'parchment' from anywhere."
|
|
echo " | The default name for the resulting alias is 'parchment', you can give an argument to override"
|
|
echo " | this default, such as:"
|
|
echo " | . ./parchment setup example"
|
|
echo " | Which will allow you to run 'example' instead."
|
|
;;
|
|
esac
|
|
|
|
unset -f paperstash
|
|
unset -f paperunstash
|