#!/bin/sh DAYZ_GAME_ID=221100 DAYZ_SERVER_ID=223350 LOCAL_MODS_DIR="${HOME}/.steam/debian-installation/steamapps/workshop/content/$DAYZ_GAME_ID" STEAM_USER="yzaddayz" alias do_sync='rsync -avrhu --delete --partial' msg() { printf '[*] %s\n' "$*" } # ==================================================================================== update_server() { msg "------------------ UPDATING DAYZ SERVER -------------------" LOCAL_INSTALL_DIR="${HOME}/.steam/debian-installation/steamapps/common/DayZServer" REMOTE_INSTALL_DIR="/mnt/dayz/DayZServer" MODS_FILE="$HOME/mods.txt" steamcmd -tcp +login "$STEAM_USER" +app_update "$DAYZ_GAME_ID" +quit steamcmd -tcp +login "$STEAM_USER" +app_update "$DAYZ_SERVER_ID" +quit do_sync "$LOCAL_INSTALL_DIR"/ "$REMOTE_INSTALL_DIR" msg "------- DONE UPDATING SERVER ---------------------" } # args: $1=server_name update_mods() { MODS_FILE="$HOME/modlists/$1.txt" REMOTE_MODS_DIR="/mnt/dayz/mods/$1" tempfile=/tmp/mods-to-download.txt :> "$tempfile" while read -r mod ; do # skip comments, blank lines case "$mod" in \#*|'') ;; *) mod=${mod%%^*} printf "+workshop_download_item $DAYZ_GAME_ID %s\n" "$mod" >> "$tempfile" mkdir -p "$LOCAL_MODS_DIR/$mod" esac done < "$MODS_FILE" msg "----------- DOWNLOAD MODS -------------" steamcmd -tcp +login "$STEAM_USER" $(cat "$tempfile" | xargs) +quit || exit 1 msg "----------- RENAMING MODS -------------" rm -rf "$HOME/mods_to_copy" 2>/dev/null ||: mkdir -p "$HOME/mods_to_copy" while read -r mod ; do # skip comments, blank lines case "$mod" in \#*|'') ;; *) mod_id=${mod%%^*} mod_name=${mod##*^} do_sync "$LOCAL_MODS_DIR/$mod_id"/ "$HOME/mods_to_copy/@${mod_name}" esac done < "$MODS_FILE" msg "----------- SYNCING MODS -------------" do_sync "$HOME/mods_to_copy"/ "$REMOTE_MODS_DIR" msg "copying mods.txt ..." cp -vf "$MODS_FILE" "$REMOTE_MODS_DIR/mods.txt" rm "$tempfile" 2>/dev/null ||: rm -rf "$HOME/mods_to_copy" 2>/dev/null ||: } main () { update_server for server in "$(ls "$HOME/modlists" | xargs | sed 's/\.txt//g')" ; do rm -rf "$HOME/.steam/debian-installation/steamapps/workshop/downloads" mkdir -p "$HOME/.steam/debian-installation/steamapps/workshop/downloads" update_mods "$server" done } main "$@"