mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-21 14:28:27 +00:00
Merge pull request #381 from klightspeed/1.5-dev#steamcmdstatus
Improve mod update behaviour
This commit is contained in:
commit
565189eefc
@ -354,6 +354,28 @@ function runSteamCMD(){
|
|||||||
"$steamcmdroot/$steamcmdexec" +@NoPromptForPassword 1 +login ${steamlogin:-anonymous} "$@" +quit
|
"$steamcmdroot/$steamcmdexec" +@NoPromptForPassword 1 +login ${steamlogin:-anonymous} "$@" +quit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function runSteamCMDspinner(){
|
||||||
|
if [ -n "$verbose" ]; then
|
||||||
|
echo
|
||||||
|
runSteamCMD "$@"
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
runSteamCMD "$@" >/dev/null 2>&1 &
|
||||||
|
local scpid=$!
|
||||||
|
local pos=0
|
||||||
|
local spinner=( '-' '/' '|' '\' )
|
||||||
|
echo -n ' ... '
|
||||||
|
while kill -0 $scpid 2>/dev/null; do
|
||||||
|
printf "\b%c" "${spinner[$pos]}"
|
||||||
|
(( pos = (pos + 1) % 4 ))
|
||||||
|
sleep 0.5
|
||||||
|
done
|
||||||
|
echo -ne '\b \b'
|
||||||
|
wait $scpid
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check if a new version is available but not apply it
|
# Check if a new version is available but not apply it
|
||||||
#
|
#
|
||||||
@ -768,7 +790,7 @@ doStopAll(){
|
|||||||
# install / update / download update
|
# install / update / download update
|
||||||
#
|
#
|
||||||
runSteamCMDAppUpdate(){
|
runSteamCMDAppUpdate(){
|
||||||
runSteamCMD +force_install_dir "$1" +app_update $appid $2
|
runSteamCMDspinner +force_install_dir "$1" +app_update $appid $2
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -945,13 +967,13 @@ doUpdate() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "$$" >"${arkserverroot}/.ark-update.lock.$$"
|
echo "$$" >"${arkserverroot}/.ark-update.lock.$$" 2>/dev/null
|
||||||
while true; do
|
while true; do
|
||||||
if ! ln "${arkserverroot}/.ark-update.lock.$$" "${arkserverroot}/.ark-update.lock"; then
|
if ! ln "${arkserverroot}/.ark-update.lock.$$" "${arkserverroot}/.ark-update.lock" 2>/dev/null; then
|
||||||
local lockpid="$(<"${arkserverroot}/.ark-update.lock")"
|
local lockpid="$(<"${arkserverroot}/.ark-update.lock")"
|
||||||
if [ -n "$lockpid" ] && [ "$lockpid" != "$$" ] && kill -0 "$lockpid"; then
|
if [ -n "$lockpid" ] && [ "$lockpid" != "$$" ] && kill -0 "$lockpid" 2>/dev/null; then
|
||||||
echo "Update already in progress (PID: $lockpid)"
|
echo "Update already in progress (PID: $lockpid)"
|
||||||
rm -f "${arkserverroot}/.ark-update.lock.$$"
|
rm -f "${arkserverroot}/.ark-update.lock.$$" 2>/dev/null
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
rm -f "${arkserverroot}/.ark-update.lock"
|
rm -f "${arkserverroot}/.ark-update.lock"
|
||||||
@ -993,7 +1015,7 @@ doUpdate() {
|
|||||||
rm -rf "$arkStagingDir/ShooterGame/Saved/"*
|
rm -rf "$arkStagingDir/ShooterGame/Saved/"*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Downloading ARK update"
|
echo -n "Downloading ARK update"
|
||||||
cd "$steamcmdroot"
|
cd "$steamcmdroot"
|
||||||
runSteamCMDAppUpdate "$arkStagingDir" $validate
|
runSteamCMDAppUpdate "$arkStagingDir" $validate
|
||||||
if [ -d "${arkStagingDir}/steamapps/downloading/${appid}" ]; then
|
if [ -d "${arkStagingDir}/steamapps/downloading/${appid}" ]; then
|
||||||
@ -1077,7 +1099,7 @@ doUpdate() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "Performing ARK update"
|
echo -n "Performing ARK update"
|
||||||
cd "$steamcmdroot"
|
cd "$steamcmdroot"
|
||||||
runSteamCMDAppUpdate "$arkserverroot" $validate
|
runSteamCMDAppUpdate "$arkserverroot" $validate
|
||||||
fi
|
fi
|
||||||
@ -1129,17 +1151,26 @@ doDownloadMod(){
|
|||||||
local moddldir="$steamcmdroot/steamapps/workshop/downloads/$mod_appid/$modid"
|
local moddldir="$steamcmdroot/steamapps/workshop/downloads/$mod_appid/$modid"
|
||||||
local dlsize=0
|
local dlsize=0
|
||||||
cd "$steamcmdroot"
|
cd "$steamcmdroot"
|
||||||
|
rm "$steamcmdroot/workshop/appworkshop_${mod_appid}.acf" 2>/dev/null
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
echo "Downloading mod $modid"
|
echo -n "Downloading mod $modid"
|
||||||
runSteamCMD +workshop_download_item $mod_appid $modid
|
runSteamCMDspinner +workshop_download_item $mod_appid $modid
|
||||||
echo
|
result=$?
|
||||||
echo "Checking mod $modid"
|
if [ $result -eq 0 ]; then
|
||||||
if [ ! -d "$moddldir" ]; then break; fi
|
break
|
||||||
local newsize="`du -s "$moddldir/.." | cut -f1`"
|
else
|
||||||
if [ $newsize -eq $dlsize ]; then break; fi
|
echo
|
||||||
dlsize=$newsize
|
echo "Checking mod $modid"
|
||||||
echo "Mod $modid not fully downloaded - retrying"
|
if [ ! -d "$moddldir" ]; then break; fi
|
||||||
|
local newsize="`du -s "$moddldir/.." | cut -f1`"
|
||||||
|
if [ $newsize -eq $dlsize ]; then
|
||||||
|
echo "Mod $modid update not progressing - aborting"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
dlsize=$newsize
|
||||||
|
echo "Mod $modid not fully downloaded - retrying"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -f "$modsrcdir/mod.info" ]; then
|
if [ -f "$modsrcdir/mod.info" ]; then
|
||||||
@ -1654,6 +1685,9 @@ while true; do
|
|||||||
--args)
|
--args)
|
||||||
nrarg=$#
|
nrarg=$#
|
||||||
;;
|
;;
|
||||||
|
--verbose)
|
||||||
|
verbose=1
|
||||||
|
;;
|
||||||
--*)
|
--*)
|
||||||
options+=( "$1" )
|
options+=( "$1" )
|
||||||
;;
|
;;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user