This commit is contained in:
2023-11-20 20:44:19 -06:00
parent 366253f1f9
commit ddcfe9e2a3
3 changed files with 147 additions and 55 deletions

View File

@@ -1,6 +1,9 @@
#!/bin/sh
#
# shellcheck disable=1090,2034,2011
#
# "should check code directly not $?"
# shellcheck disable=2181
# ---------------------------------------------------
# ===================================================
@@ -25,6 +28,7 @@ export MODLISTS="$PWD/modlists"
export LOCAL_STOCK="$HOME/stock/DayZ"
export LOCAL_STOCK_GAME="$LOCAL_STOCK/DayZ"
export LOCAL_STOCK_SERVER="$LOCAL_STOCK/DayZServer"
export LOCAL_STOCK_MODS="$LOCAL_STOCK/mods"
# ===================================================
# 03. Mount network drive
@@ -40,7 +44,7 @@ fi
# ===================================================
# 04. Checks
# ===================================================
mkdir -p "$LOCAL_STOCK_GAME" "$LOCAL_STOCK_SERVER"
mkdir -p "$LOCAL_STOCK_GAME" "$LOCAL_STOCK_SERVER" "$LOCAL_STOCK_MODS"
if [ "$USER" != "$STEAMCMD_USER" ] ; then
die "Current user: '$USER' does not match '$STEAMCMD_USER'"
@@ -93,13 +97,13 @@ update_game() {
# args: $1 = server_modlist.txt to update
update_mods_for_server() {
MODS_FILE="$MODLISTS/$1"
REMOTE_MODS_DIR="$REMOTE_MODS_DIR/${1%.txt}"
mkdir -p "$REMOTE_MODS_DIR/${1%.txt}"
mods_file="$MODLISTS/$1"
map_name=${1%.txt}
mkdir -p "$REMOTE_MODS/$map_name"
# Create temporary file to list all the mod_id's we are
# going to download. This speeds up steamcmd and avoids rate limits.
tempfile=/tmp/mods-to-download.txt
tempfile="/tmp/$map_name-mods_to_download.txt"
:> "$tempfile"
# load the server_modlist.txt, copying the mod id's we need to update
@@ -113,20 +117,69 @@ update_mods_for_server() {
#
while read -r mod ; do
case "$mod" in
\#*|'')
\#*|''|' ')
;;
*)
mod=${mod%%^*}
if [ -z "$mod" ] ; then
die "mod for $server appears to be empty - syntax error"
fi
printf "+workshop_download_item $DAYZ_GAME_ID %s\n" "$mod" >> "$tempfile"
mkdir -p "$LOCAL_MODS_DIR/$mod"
esac
done < "$MODS_FILE"
rm "$tempfile" 2>/dev/null ||:
unset tempfile mod
# check validity of syntax
if [ -z "$mod" ] ; then
die "mod for $map_name appears to be empty - syntax error"
fi
if ! isnum "$mod" ; then
die "mod $mod for $map_name does not appear to be a number"
fi
printf "%s\n" "$mod" >> "$tempfile"
mkdir -p "$LOCAL_STOCK_MODS/$mod"
esac
done <"$mods_file"
unset mod
msg "----------- DOWNLOADING MODS -------------"
# shellcheck disable=2046
steamcmd \
-tcp \
+force_install_dir "$LOCAL_MODS_DIR" \
+@sSteamCmdForcePlatformType windows \
+@ShutdownOnFailedCommand 1 \
+login "$STEAM_USER" \
+workshop_download_item \
"$DAYZ_GAME_ID" \
$(xargs < "$tempfile") \
+quit
msg "exiting - test"
exit 1
if [ $? -ne 0 ] ; then
die "Problem downloading mods for $map_name"
fi
msg "------------ RENAMING MODS -------------"
mods_to_copy="$LOCAL_STOCK_MODS/mods_to_copy"
rm -rf "$mods_to_copy" 2>/dev/null ||:
mkdir -p "$mods_to_copy"
:> "$mods_to_copy/mods.txt"
while read -r mod ; do
# skip comments, blank lines
case "$mod" in
\#*|''|' ')
;;
*)
mod_id=${mod%%^*}
mod_name=${mod##*^}
do_sync "$LOCAL_STOCK_MODS/$mod_id"/ "$mods_to_copy/@${mod_name}"
printf '@%s\n' "$mod_name" >> "$mods_to_copy/mods.txt"
esac
done < "$mods_file"
msg "----------- SYNCING MODS -------------"
do_sync "$mods_to_copy"/ "$REMOTE_MODS"
rm -f "$tempfile" 2>/dev/null ||:
unset tempfile mod map_name mods_file mods_to_copy mod_name mod_id
}
main() {