asdf
This commit is contained in:
@@ -33,6 +33,45 @@ die() {
|
|||||||
errmsg "$*"
|
errmsg "$*"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
isnum() {
|
||||||
|
case $1 in
|
||||||
|
''|*[!0-9]*)
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 0
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
isempty() {
|
||||||
|
for arg in "$@" ; do
|
||||||
|
# exit in error if file
|
||||||
|
if [ -f "$arg" ] ; then
|
||||||
|
exit 1
|
||||||
|
elif [ -L "$arg" ] ; then
|
||||||
|
# if is a symlink, check what it points to
|
||||||
|
# note: this only checks one-link level deep
|
||||||
|
if [ -d "$(readlink "$arg")" ] ; then
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [ -d "$arg" ] ; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
# is not a directory or a link to a directory
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# there should be a way to make this be builtins only
|
||||||
|
# using printf and glob expansions, look into later
|
||||||
|
if /bin/rmdir "$arg" 2>/dev/null ; then
|
||||||
|
/bin/mkdir -p "$arg"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
mount_dayz_network_drive() {
|
mount_dayz_network_drive() {
|
||||||
if ! is_network_drive_mounted ; then
|
if ! is_network_drive_mounted ; then
|
||||||
sudo mkdir -p /mnt/dayz
|
sudo mkdir -p /mnt/dayz
|
||||||
|
|||||||
@@ -29,53 +29,53 @@
|
|||||||
# }
|
# }
|
||||||
|
|
||||||
# args: $1=server_name
|
# args: $1=server_name
|
||||||
update_mods() {
|
# update_mods() {
|
||||||
MODS_FILE="$HOME/modlists/$1"
|
# MODS_FILE="$HOME/modlists/$1"
|
||||||
REMOTE_MODS_DIR="/mnt/dayz/mods/${1%.txt}"
|
# REMOTE_MODS_DIR="/mnt/dayz/mods/${1%.txt}"
|
||||||
mkdir -p "$REMOTE_MODS_DIR"
|
# mkdir -p "$REMOTE_MODS_DIR"
|
||||||
|
|
||||||
tempfile=/tmp/mods-to-download.txt
|
# tempfile=/tmp/mods-to-download.txt
|
||||||
:> "$tempfile"
|
# :> "$tempfile"
|
||||||
|
|
||||||
while read -r mod ; do
|
# while read -r mod ; do
|
||||||
# skip comments, blank lines
|
# # skip comments, blank lines
|
||||||
case "$mod" in
|
# case "$mod" in
|
||||||
\#*|'')
|
# \#*|'')
|
||||||
;;
|
# ;;
|
||||||
*)
|
# *)
|
||||||
mod=${mod%%^*}
|
# mod=${mod%%^*}
|
||||||
printf "+workshop_download_item $DAYZ_GAME_ID %s\n" "$mod" >> "$tempfile"
|
# printf "+workshop_download_item $DAYZ_GAME_ID %s\n" "$mod" >> "$tempfile"
|
||||||
mkdir -p "$LOCAL_MODS_DIR/$mod"
|
# mkdir -p "$LOCAL_MODS_DIR/$mod"
|
||||||
esac
|
# esac
|
||||||
done < "$MODS_FILE"
|
# done < "$MODS_FILE"
|
||||||
|
|
||||||
msg "----------- DOWNLOAD MODS -------------"
|
# msg "----------- DOWNLOAD MODS -------------"
|
||||||
steamcmd -tcp +login "$STEAM_USER" $(cat "$tempfile" | xargs) +quit || exit 1
|
# steamcmd -tcp +login "$STEAM_USER" $(cat "$tempfile" | xargs) +quit || exit 1
|
||||||
msg "----------- RENAMING MODS -------------"
|
# msg "----------- RENAMING MODS -------------"
|
||||||
|
|
||||||
rm -rf "$HOME/mods_to_copy" 2>/dev/null ||:
|
# rm -rf "$HOME/mods_to_copy" 2>/dev/null ||:
|
||||||
mkdir -p "$HOME/mods_to_copy"
|
# mkdir -p "$HOME/mods_to_copy"
|
||||||
|
|
||||||
:> "$HOME/mods_to_copy/mods.txt"
|
# :> "$HOME/mods_to_copy/mods.txt"
|
||||||
while read -r mod ; do
|
# while read -r mod ; do
|
||||||
# skip comments, blank lines
|
# # skip comments, blank lines
|
||||||
case "$mod" in
|
# case "$mod" in
|
||||||
\#*|'')
|
# \#*|'')
|
||||||
;;
|
# ;;
|
||||||
*)
|
# *)
|
||||||
mod_id=${mod%%^*}
|
# mod_id=${mod%%^*}
|
||||||
mod_name=${mod##*^}
|
# mod_name=${mod##*^}
|
||||||
do_sync "$LOCAL_MODS_DIR/$mod_id"/ "$HOME/mods_to_copy/@${mod_name}"
|
# do_sync "$LOCAL_MODS_DIR/$mod_id"/ "$HOME/mods_to_copy/@${mod_name}"
|
||||||
printf '@%s\n' "$mod_name" >> "$HOME/mods_to_copy/mods.txt"
|
# printf '@%s\n' "$mod_name" >> "$HOME/mods_to_copy/mods.txt"
|
||||||
esac
|
# esac
|
||||||
done < "$MODS_FILE"
|
# done < "$MODS_FILE"
|
||||||
|
|
||||||
msg "----------- SYNCING MODS -------------"
|
# msg "----------- SYNCING MODS -------------"
|
||||||
do_sync "$HOME/mods_to_copy"/ "$REMOTE_MODS_DIR"
|
# do_sync "$HOME/mods_to_copy"/ "$REMOTE_MODS_DIR"
|
||||||
|
|
||||||
rm "$tempfile" 2>/dev/null ||:
|
# rm "$tempfile" 2>/dev/null ||:
|
||||||
rm -rf "$HOME/mods_to_copy" 2>/dev/null ||:
|
# rm -rf "$HOME/mods_to_copy" 2>/dev/null ||:
|
||||||
}
|
# }
|
||||||
|
|
||||||
update_stock_maps() {
|
update_stock_maps() {
|
||||||
msg "----------- UPDATING MAPS -------------"
|
msg "----------- UPDATING MAPS -------------"
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# shellcheck disable=1090,2034,2011
|
# 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="$HOME/stock/DayZ"
|
||||||
export LOCAL_STOCK_GAME="$LOCAL_STOCK/DayZ"
|
export LOCAL_STOCK_GAME="$LOCAL_STOCK/DayZ"
|
||||||
export LOCAL_STOCK_SERVER="$LOCAL_STOCK/DayZServer"
|
export LOCAL_STOCK_SERVER="$LOCAL_STOCK/DayZServer"
|
||||||
|
export LOCAL_STOCK_MODS="$LOCAL_STOCK/mods"
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
# 03. Mount network drive
|
# 03. Mount network drive
|
||||||
@@ -40,7 +44,7 @@ fi
|
|||||||
# ===================================================
|
# ===================================================
|
||||||
# 04. Checks
|
# 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
|
if [ "$USER" != "$STEAMCMD_USER" ] ; then
|
||||||
die "Current user: '$USER' does not match '$STEAMCMD_USER'"
|
die "Current user: '$USER' does not match '$STEAMCMD_USER'"
|
||||||
@@ -93,13 +97,13 @@ update_game() {
|
|||||||
|
|
||||||
# args: $1 = server_modlist.txt to update
|
# args: $1 = server_modlist.txt to update
|
||||||
update_mods_for_server() {
|
update_mods_for_server() {
|
||||||
MODS_FILE="$MODLISTS/$1"
|
mods_file="$MODLISTS/$1"
|
||||||
REMOTE_MODS_DIR="$REMOTE_MODS_DIR/${1%.txt}"
|
map_name=${1%.txt}
|
||||||
mkdir -p "$REMOTE_MODS_DIR/${1%.txt}"
|
mkdir -p "$REMOTE_MODS/$map_name"
|
||||||
|
|
||||||
# Create temporary file to list all the mod_id's we are
|
# Create temporary file to list all the mod_id's we are
|
||||||
# going to download. This speeds up steamcmd and avoids rate limits.
|
# 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"
|
:> "$tempfile"
|
||||||
|
|
||||||
# load the server_modlist.txt, copying the mod id's we need to update
|
# 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
|
while read -r mod ; do
|
||||||
case "$mod" in
|
case "$mod" in
|
||||||
\#*|'')
|
\#*|''|' ')
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
mod=${mod%%^*}
|
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 ||:
|
# check validity of syntax
|
||||||
unset tempfile mod
|
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() {
|
main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user