129 lines
3.5 KiB
Bash
129 lines
3.5 KiB
Bash
#!/bin/bash
|
|
|
|
#Dotnet Path for starting the server
|
|
export DOTNET_ROOT=$HOME/dotnet
|
|
export PATH=$PATH:$HOME/dotnet
|
|
|
|
|
|
# Set the GitHub repository
|
|
REPO="Byte-Nova/Rimworld-Together"
|
|
|
|
# Set the platform
|
|
#This is how it finds what release to grab.
|
|
#It should be part of the file name you want under Assests on the release page.
|
|
SEARCH="Linux-x64"
|
|
|
|
# Path to the SteamCMD executable
|
|
STEAMCMD_PATH="/opt/steamcmd/steamcmd.sh"
|
|
|
|
# Path to the text file containing workshop IDs (one ID per line)
|
|
WORKSHOP_IDS_FILE="/home/rimworld/workshop_ids.txt"
|
|
|
|
# Path to the directory where you want to install the workshop items
|
|
#mods will be in $INSTALL_DIR/steamapps/workshop/content/$APP_ID/$workshop_id/
|
|
INSTALL_DIR="/home/rimworld/"
|
|
|
|
# AppID for the game (replace with the appropriate AppID)
|
|
APP_ID="294100"
|
|
|
|
cd "/home/rimworld/" || exit
|
|
|
|
|
|
# Update Mods
|
|
|
|
# Ensure the SteamCMD executable exists
|
|
if [ ! -f "$STEAMCMD_PATH" ]; then
|
|
echo "Error: SteamCMD not found at $STEAMCMD_PATH. Please provide the correct path."
|
|
exit 1
|
|
fi
|
|
|
|
|
|
modupdate(){
|
|
# Loop through each workshop ID in the file
|
|
while IFS= read -r workshop_id || [ -n "$workshop_id" ]; do
|
|
# Run SteamCMD to install the workshop item
|
|
"$STEAMCMD_PATH" +force_install_dir "$INSTALL_DIR" +login anonymous +workshop_download_item "$APP_ID" "$workshop_id" +quit
|
|
|
|
echo
|
|
echo
|
|
echo
|
|
echo "Installed workshop item with ID $workshop_id"
|
|
echo
|
|
|
|
#Rate Limit fix
|
|
sleep 5
|
|
done < "$WORKSHOP_IDS_FILE"
|
|
}
|
|
#modupdate
|
|
|
|
# Update RWT
|
|
|
|
|
|
# Fetch the latest release information using the GitHub API
|
|
RELEASE_INFO=$(curl -s "https://api.github.com/repos/$REPO/releases/latest")
|
|
|
|
# Extract the version using jq and store it in version.txt
|
|
NEW_VERSION=$(echo "$RELEASE_INFO" | jq -r ".tag_name" | sed 's/[^0-9]*//g')
|
|
CURRENT_VERSION=$(cat version.txt 2>/dev/null)
|
|
|
|
# Check if version.txt exists and if the latest version is newer
|
|
if [ -z "$CURRENT_VERSION" ] || [ "$NEW_VERSION" -gt "$CURRENT_VERSION" ]; then
|
|
echo "Newer version available. Updating version.txt and downloading..."
|
|
|
|
# Update version.txt with the new version
|
|
echo "$NEW_VERSION" > version.txt
|
|
|
|
# Extract the download URLs for all assets
|
|
DOWNLOAD_URLS=$(echo "$RELEASE_INFO" | jq -r '.assets[] | .browser_download_url')
|
|
|
|
# Loop through each download URL and find the one containing the SEARCH string
|
|
for URL in $DOWNLOAD_URLS; do
|
|
if [[ $URL == *"$SEARCH"* ]]; then
|
|
DOWNLOAD_URL=$URL
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Download the release
|
|
if [ -n "$DOWNLOAD_URL" ]; then
|
|
echo "Downloading $DOWNLOAD_URL"
|
|
curl -LOs "$DOWNLOAD_URL"
|
|
echo "Download complete."
|
|
|
|
# Check if a tar file exists in the directory
|
|
#Change file extension as needed!
|
|
if [ -e *.zip ]; then
|
|
# Extract the tar file
|
|
echo "Extracting zip file..."
|
|
unzip -o *.zip
|
|
|
|
# Delete the tar file
|
|
echo "Deleting zip file..."
|
|
rm -f *.zip
|
|
#change perms on the server exe
|
|
chmod +x /home/rimworld/GameServer
|
|
echo "Zip file deleted."
|
|
else
|
|
echo "Error: No tar file found in the directory."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Error: Unable to find download URL for $SEARCH."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Already up-to-date. No need to download."
|
|
fi
|
|
|
|
|
|
|
|
#sync the config files with the website.
|
|
rsync -av --include='*.json' --exclude='*' --stats "/home/rimworld/Core/" "/var/www/html/assets/Rimworld/"
|
|
|
|
#Run the server
|
|
cd /home/rimworld/ || exit 1
|
|
./GameServer
|
|
|
|
|
|
exit
|