diff --git a/build-singleplayer.sh b/build-singleplayer.sh index beb1259..25f7a20 100755 --- a/build-singleplayer.sh +++ b/build-singleplayer.sh @@ -1,50 +1,65 @@ -#!/bin/bash +echo "Cloning latest build..." -if [ -f gradlew ] -then - chmod +x gradlew - mkdir -p Single-Player +remote="https://gitlab.com/2009scape/2009scape" - echo Building Client... - cd Client - ../gradlew jar - cd .. - cp Client/build/libs/client-1.0.0.jar Single-Player/client.jar - echo +tag=$(git ls-remote --tags --exit-code --refs "$remote" | sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g' | sort -t'-' -k3,3n -k1,1M -k2,2n | tail -1) - echo Building Management-Server... - cd Management-Server - ../gradlew jar - cd .. - cp Management-Server/build/libs/managementserver-1.0.0.jar Single-Player/ms.jar - echo +echo "Selected tag: $tag" - echo Building Server... - cd Server - ../gradlew jar - cd .. - cp Server/build/libs/server-1.0.0.jar Single-Player/server.jar - echo +# Clone as shallowly as possible. Remote is the last argument. +git -c advice.detachedHead=false clone --branch "$tag" --depth 1 --quiet "$remote" - echo Copying server data... - - rm -rf Single-Player/data - cp -R Server/data Single-Player/data - cp -R Management-Server/managementprops Single-Player/managementprops - cp Server/db_exports/*.sql Single-Player/data - - # Set Debug/Dev mode to false on single player server config - - cat Server/worldprops/default.json | sed -e 's/\"debug\": true/\"debug\": false/' | sed -e 's/\"dev\": true/\"dev\": false/' > Single-Player/worldprops/default.json - - - # Replace Live server addresses with localhost - - cat Client/config.json | sed -e 's/play.2009scape.org/localhost/' > Single-Player/config.json - - echo - - echo Done! -else - echo ERR: Run in 2009scape source directory to build +if [ -e "data" ]; then + echo "Backing up existing user data..." + mkdir data-backup + mv data/eco data-backup/eco + mv data/players data-backup/players + mv data/serverstore data-bacup/serverstore + rm -fr data fi + +rm -fr worldprops +rm -fr managementprops +rm ms.jar +rm server.jar +rm client.jar + +cd 2009scape + +echo "Building Management-Server" +cd Management-Server +sh mvnw -DskipTests package > /dev/null +mv target/*-with-dependencies.jar ../../ms.jar +mv managementprops ../.. +cd .. + +echo "Building Server (This will probably take a while.)" +cd Server +sh mvnw clean > /dev/null +sh mvnw -DskipTests package > /dev/null +mv target/*-with-dependencies.jar ../../server.jar +mv data ../.. +mv worldprops ../.. +cd ../.. + +rm -fr 2009scape + +echo "Downloading Client" +wget --quiet "cdn.2009scape.org/2009scape.jar" + +mkdir jars +mv 2009scape.jar jars/client.jar +mv server.jar jars +mv ms.jar jars + +if [ -e "data-backup" ]; then + echo "Restoring existing user data..." + mv data-backup/eco data/eco + mv data-backup/players data/players + mv data-backup/serverstore data/serverstore + rm -fr data-backup +fi + +echo "Modifying server config for singleplayer..." +cat worldprops/default.conf | sed -e 's/dev = true/dev = false/' | sed -e 's/debug = true/debug = false/' | sed -e 's/daily_restart = true/daily_restart = false/' | sed -e 's/activity = "2009scape classic."/activity = "Singleplayer"/' | sed -e 's/bots_influence_ge_price = true/bots_influence_ge_price = false/' > worldprops/sp.conf +mv worldprops/sp.conf worldprops/default.conf